我試圖爲類路徑協議註冊自定義URL處理程序,如another thread中所述。下面是代碼: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 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
,所以屬性被設置。不過,它看起來並沒有生效,因爲上面的調用會拋出異常。
如果我在註釋行中顯式提供處理程序,一切都很好。但是,我寧願不明確提供它 - 它應該自動完成。
我在做什麼錯?
如果您將處理程序傳遞給URL的構造函數,它工作嗎? (這只是一個調試提議,而不是最終解決方案)。 – 2011-06-08 12:16:34
是的,如果我註釋掉第一條語句並使用該語句,它就可以工作。 – Dario 2011-06-08 12:36:25
啊,對不起,完全沒有讀到這個問題:-(。 – 2011-06-08 12:37:51