我试图为类路径协议注册自定义URL处理程序,如另一个线程所述。这是代码:
package com.mycompany;
import org.junit.Test;
import java.net.MalformedURLException;
import java.net.URL;
import com.mycompany.protocol.classpath.Handler;
public class ParserTest {
@Test
public void testParsing() throws MalformedURLException {
System.out.println(System.getProperty("java.protocol.handler.pkgs"));
//URL url = new URL(null, "classpath://com.mycompany/hello-world.xml", new Handler(ClassLoader.getSystemClassLoader()));
URL url = new URL("classpath://com.mycompany/hello-world.xml");
}
}
该测试用例具有以下JVM参数:
-Djava.protocol.handler.pkgs=com.mycompany.protocol
该System.out.println行正确输出com.mycompany.protocol,因此正在设置属性。但是,由于上面的调用将引发java.net.MalformedURLException:
unknown protocol: classpath异常,因此它似乎没有生效。
如果我像注释行中那样显式提供处理程序,则一切都很好。但是,我不想明确提供它-它应该自动完成。
我究竟做错了什么?