ホームページ > Java > &#&チュートリアル > カスタム URL プロトコルを使用してクラスパス リソースをロードするにはどうすればよいですか?

カスタム URL プロトコルを使用してクラスパス リソースをロードするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-26 07:42:12
オリジナル
801 人が閲覧しました

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

クラスパス プロトコルを使用したリソースのロード

問題ステートメント:

クラスパスからのリソースのロード特定の JAR ファイルまたはクラスを指定する必要のない URL プロトコルを使用する

解決策:

URL ストリーム ハンドラーの実装:

クラスパスからリソースをロードするプロトコルを作成するには、カスタム URLStreamHandler を実装します。このハンドラーは、「クラスパス」プロトコルを使用して URL への接続を開きます。

<br>パブリック クラス ハンドラーは URLStreamHandler を継承します。 {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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リソース.

<br>新しい URL("classpath:org/my/package/resource.extension").openConnection();<br>

起動の処理問題:

手動コード ハンドラー仕様:

可能であれば、URL の作成時にカスタム ハンドラーを手動で指定します。

新しい URL(null, "classpath:some/package/resource.extension", new org.my.protocols.classpath.Handler(ClassLoader.getSystemClassLoader()))<br>

JVM ハンドラーの登録:

URLStreamHandlerFactory を登録するJVM でクラスパスを使用してすべての URL を処理するprotocol.

<br>URL.setURLStreamHandlerFactory(new ConfigurableStreamHandlerFactory("classpath", new Handler(ClassLoader.getSystemClassLoader())));<br>

注意:

JVM ハンドラーの登録は、JVM ごとに 1 回しか呼び出すことができないため、複数のハンドラーが競合する可能性がある環境で使用する場合は注意してください。

以上がカスタム URL プロトコルを使用してクラスパス リソースをロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート