ホームページ  >  記事  >  Java  >  Java で JAR ファイルからリソースにアクセスするにはどうすればよいですか?

Java で JAR ファイルからリソースにアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 16:36:02542ブラウズ

How to Access Resources from JAR Files in Java?

JAR ファイルからのリソースのロード

アプリケーションでは、WinProcessor.class.getResource("repository") を使用してリソースをロードしています。 toString()。IDE から実行する場合はファイル パスを提供しますが、JAR ファイルとして実行する場合は JAR URL を返します。この不一致は、JAR ファイルに圧縮およびパッケージ化された形式のリソースが含まれているために発生します。

JAR へのリソースのロードについて

アプリケーションを JAR ファイルにパッケージ化すると、その内容がリソースを含むファイルはアーカイブ内に保存されます。 JAR ファイル内からリソースにアクセスしようとすると、JVM はそのリソースをファイル システム内のファイルとは異なる方法で扱います。 getResource メソッドは、JAR 内のリソースの場所を指す URL を返します。

解決策: getResourceAsStream を使用する

この問題を解決するには、getResourceAsStream の代わりに getResourceAsStream を使用することをお勧めします。リソースを取得します。 getResourceAsStream は、JAR ファイルからリソースの内容を直接読み取ることができるようにする InputStream を返します。次に、InputStream を使用して、ConfigurationContext などの必要なオブジェクトを作成したり、システム プロパティを設定したりできます。

getResourceAsStream を使用した更新された例を次に示します。

InputStream repositoryInputStream = WinProcessor.class.getResourceAsStream("repository");
ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryInputStream, null);

InputStream fileNameInputStream = WinProcessor.class.getResourceAsStream("file_name");
System.setProperty("javax.net.ssl.trustStore", fileNameString);

getResourceAsStream を使用すると、次のような問題を回避できます。 IDE から実行する場合と JAR ファイルとして実行する場合のパスの違いの問題。 InputStream は JAR 内のリソースの場所を正しくポイントしているため、その内容にアクセスできます。

以上がJava で JAR ファイルからリソースにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。