我的意思是,Java如何決定哪些協議可用?我從Eclipse內部運行一些代碼,它工作得很好。然後我從Eclipse外部運行相同的代碼,並且得到「未知協議」MalformedURLException。可能它與代碼庫有關,或者什麼?任何提示都會有所幫助。Java中如何引發MalformedURLException
謝謝!
我的意思是,Java如何決定哪些協議可用?我從Eclipse內部運行一些代碼,它工作得很好。然後我從Eclipse外部運行相同的代碼,並且得到「未知協議」MalformedURLException。可能它與代碼庫有關,或者什麼?任何提示都會有所幫助。Java中如何引發MalformedURLException
謝謝!
解析協議的工作由URLStreamHandler
完成,它們通過協議以小寫形式存儲在URL.handlers
中。處理程序又由URLStreamHandlerFactory
在URL.factory
創建。也許月食會與此廝混?
一些URL constructors採取流處理程序,您可以使用URL.setURLStreamHandlerFactory設置工廠。
這是關於developing protocol handlers的網頁。
該URL是一些應該由應用程序處理的自定義URL(「media:///」)。 – Gabriel 2008-09-26 13:11:02
可能是類路徑問題。如果您使用的協議取決於您包含的某個庫(jar),然後從eclipse導出JAR,那麼您包含在項目中的JAR文件可能不會被eclipse之外的運行代碼找到。你需要一個清單文件在你的jar中指向需要的庫。定義的協議處理程序的
Java標準方式這裏描述: http://java.sun.com/developer/onlineTraining/protocolhandlers/
這依賴於協議處理程序類是可用上的引導加載器(?)。這對OSGi(以及Eclipse)並不適用。 OSGi提供了這個機制的包裝,允許bundle/plugins貢獻協議處理程序。 參見:http://www.osgi.org/javadoc/r4v41/org/osgi/service/url/URLStreamHandlerService.html
Eclipse還提供了自己的協議:bundle-resource(iirc),它絕對不會在Eclipse之外工作。
什麼protocals?更好的是,你遇到什麼URL? – sblundy 2008-09-26 13:06:11