我尝试为类路径协议注册一个自定义的URL处理程序,如another thread中所述。代码如下:
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
异常。
如果我像注释行一样显式地提供处理程序,那么一切都很好。然而,我宁愿不显式地提供它-它应该是自动完成的。
我做错了什么?
https://stackoverflow.com/questions/6278299
复制相似问题