4

JAR ファイル内の別のパッケージ内のあるクラスからファイルにアクセスしようとしています。具体的には、入力ストリームを作成しているクラスの名前は ClassA.class で、パッケージ com.something.somethingelse にありますが、入力ストリームで開こうとしているファイルはパッケージ com にあります。何か。ストレージ。以下に示すように、getResourceAsStream メソッドを呼び出しています。

    ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");

ただし、入力ストリームを null にすることはできないことを示す IllegalArgumentException がスローされます。テキストファイルを ClassA と同じパッケージに格納してみましたが、問題は発生しませんでした。これは、別のパッケージに格納されている場合にのみ発生します。助けてください。

これを行っているメソッドが静的メソッドであることを知っておくと役立つ場合もあります。それは問題と関係がありますか?

4

2 に答える 2

3

クラス内com.something.somethingelseで、次のようにストリームを開きます。

getClass().getClassLoader().getResourceAsStream("com/something/storage/MyFile.txt");

を使用しgetClassLoader()て、パッケージ パスを絶対的な方法で指定します (最初の なし/)。

于 2012-06-30T09:32:44.660 に答える
1

ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");

ファイル「/com/something/storage/MyFile.txt」が存在しないため、null を返します

于 2012-06-30T05:25:12.483 に答える