ホームページ > Java > &#&チュートリアル > JAR からリソースをロードするときに getResourceAsStream が Null を返すのはなぜですか? それを修正するにはどうすればよいですか?

JAR からリソースをロードするときに getResourceAsStream が Null を返すのはなぜですか? それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-20 07:59:10
オリジナル
375 人が閲覧しました

Why Does getResourceAsStream Return Null When Loading Resources from a JAR, and How Can I Fix It?

JAR からリソースをロードする場合の「getResourceAsStream Returns Null」の解決

コンパイル済み JAR 内のパッケージからテキスト ファイルをロードしようとすると、 getResourceAsStream メソッドは null を返す可能性があるため、開発者は困惑します。この記事では、この問題を詳しく掘り下げ、解決策を示します。

Class::getResourceAsStream とさまざまな引数を使用してファイルをロードしようとした最初の試行はすべて、null が出力されるという結果になりました。この予期しない動作は、Class::getResourceAsStream(...) メソッドで使用されるシステム クラス ローダーが JAR を認識しないため、JAR ファイル内のリソースにアクセスできないことが原因です。

この問題を解決するには、JAR 内のリソースにアクセスできる適切なクラス ローダーを使用する必要があります。 Java では、各クラスはクラス ローダーによってロードされ、Lifepaths クラスをロードしたクラス ローダーは JAR 内のリソースにアクセスできます。したがって、ファイルをロードする正しい方法は、次に示すように Class::getResourceAsStream() メソッドを直接使用することです。

public static InputStream loadResource() {
    return Lifepaths.class.getResourceAsStream("/initialization/Lifepaths.txt");
}
ログイン後にコピー

getResourceAsStream(name) を呼び出すときは、名前が "/ で始まる必要があることに注意してください。 」。これにより、リソースがクラスパスのルートからロードされることが保証され、クラス ローダーがファイルを正しく見つけるために不可欠です。

以上がJAR からリソースをロードするときに getResourceAsStream が Null を返すのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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