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クラス向けのものであることです。アプリケーション自体を対象としたコンテキストクラスローダーにアクセスする必要があります。