首頁 >Java >java教程 >如何使用自訂URL協定載入Classpath資源?

如何使用自訂URL協定載入Classpath資源?

Barbara Streisand
Barbara Streisand原創
2024-11-26 07:42:12781瀏覽

How Can I Load Classpath Resources Using a Custom URL Protocol?

使用類路徑協定載入資源

問題陳述:

從類路徑載入資源使用不需要指定特定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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn