我试图注册一个类路径协议的自定义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
异常,因此似乎没有生效。
如果像注释中那样明确提供处理程序,一切都很好。但是,我宁愿不显式提供它 - 应该自动完成。
我做错了什么?