Java-注册自定义URL协议处理程序

Java-注册自定义URL协议处理程序,java,Java,我尝试为类路径协议注册自定义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 testPars

我尝试为类路径协议注册自定义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.malformedurexception:unknown protocol:classpath
异常

如果我像在注释行中那样显式地提供处理程序,那么一切都很好。然而,我宁愿不明确地提供它——它应该自动完成


我做错了什么?

我发现了问题所在。我使用的函数有一个非默认构造函数。当然,因为它只有一个非默认构造函数,所以无法实例化处理程序。我向尝试调试此问题的所有人道歉,我没有看到此连接。

调试此类问题的最简单方法可能是枚举已注册的协议处理程序。

如果将处理程序传递给URL的构造函数,是否有效?(这只是一个调试建议,不是最终解决方案)。是的,如果我将第一个语句注释掉并使用该语句,它会起作用。啊,对不起,没有完全阅读问题:-(.@Dario你能告诉我如何编写自定义jdbc驱动程序吗?如果有很好的参考资料,请帮助我链接。不要抱歉,他们也会知道如何解决这类问题。虽然这可以从理论上回答问题,但请在此处包括答案的基本部分,并提供链接供参考。该链接似乎不再有效(截至2014年3月11日)