使用類路徑協定載入資源
問題陳述:
從類路徑載入資源使用不需要指定特定JAR 檔案或類別的URL協定
解決方案:
實作URL 流處理程序:
建立一個從類路徑載入資源的協議,實作自訂URLStreamHandler。此處理程序將使用「classpath」協定開啟與 URL 的連線。
<br>public class Handler extends URLStreamHandler {<pre class="brush:php;toolbar:false">private final ClassLoader classLoader; public Handler(ClassLoader classLoader) { this.classLoader = classLoader; } @Override protected URLConnection openConnection(URL u) throws IOException { final URL resourceUrl = classLoader.getResource(u.getPath()); return resourceUrl.openConnection(); }
}
用法:
用法:用法:
用法:
用法:
使用自訂處理程序在載入資源時的URL。
<p>new URL("classpath:org/my/package/resource.extension").openConnection();<strong></strong></p>
處理啟動問題:
手動程式碼處理程序規格:
如果可能,手動指定建立 URL 時的自訂處理程序。
<p>new URL(null, "classpath:some/package/resource.extension", new org.my.protocols.classpath.Handler(ClassLoader .getSystemClassLoader()))</p>
JVM處理程序註冊:
向 JVM 註冊一個 URLStreamHandlerFactory,用於使用 classpath 協定處理所有 URL。
<p>URL.setURLStreamHandlerFactory(new ConfigurableStreamHandlerFactory("classpath",新的Handler(ClassLoader.getSystemClassLoader())));</p>警告:警告:警告:警告:警告:每JVM能呼叫一次JVM 處理程序註冊,因此,在多個處理程序可能發生衝突的環境中使用它時要小心。
以上是如何使用自訂URL協定載入Classpath資源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!