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 サイトの他の関連記事を参照してください。