Javaプロジェクトのコンパイル済みJARのパッケージ内からテキストファイルをロードしています。関連するディレクトリ構造は次のとおりです。
/src/initialization/Lifepaths.txt
私のコードはClass::getResourceAsStreamを返すように呼び出してファイルをロードしますInputStream。
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
null何を使用しても、印刷は常に印刷されます。上記がうまくいかない理由がわからないので、私も試しました:
"/src/initialization/Lifepaths.txt""initialization/Lifepaths.txt""Lifepaths.txt"
これらはどちらも機能しません。私は これまでにこのトピックに関して数多くの質問を読み ましたが、どれも役に立たなかった-通常、彼らは単に私がすでに行っているルートパスを使用してファイルをロードするように言うだけです。または、現在のディレクトリからファイルをロードするだけです(単にload )。ファイルは、適切な場所に適切な名前でJARにコンパイルされています。 filename
どうすればこれを解決できますか?
Lifepaths.classます。とはgetClassLoader()いえ、なぜ機能するのですか?(また、お気軽に回答を投稿してください!)
Lifepaths.getClass()か?Objectにはそのような静的メソッドは定義されていません...
getResource(String)。ところで-私は常にこれらのいずれかをstaticコンテキストで機能させるのに問題がありました。問題は基本的に、取得したクラスローダーがJ2SEクラス向けのものであることです。アプリケーション自体を対象としたコンテキストクラスローダーにアクセスする必要があります。
。