JAR内にパッケージ化されているファイルから、それを読み込むクラスとともに読み込もうとしています。これを行うために、私は次のようにします。私は作成して、OSX上のJARファイルを実行するとJAR内のファイルをウィンドウ上で操作していない
getClass().getClassLoader().getResourceAsStream(file)
これは正常に動作しますが、私は作成して、Windows上のJARファイルを実行した場合、上記の行はnullを返します。
ここに何か不足していますか?私がOSX上でJARを作成し、それをWindows上で実行するとうまくいきます。この問題は、Windows上でJARを作成した場合にのみ発生します。
EDIT:JARファイル内にフォルダ階層が存在しないことに言及することは重要です。すべてが1つのレベルに格納されているため、ファイルを読み取るクラスとファイル自体が同じディレクトリにあります。私はOSXとWindowsの両方で、JARファイルを作成していますかまた、これは次のようになります。
jar -cmf manifest.mf run.jar *.class file1 file2
EDIT 2:私はロードしようとしているファイルは、Java .propertiesファイルです。私はそれを取って問題の原因となっているのではないのですか?
jarファイルはzipファイルなので、Windowsで作成したバージョンを確認することができます。 .zipで名前を変更し、Windowsエクスプローラで内部を参照してください。 –
@ NathanielWaisbrot正確に何を確認しますか?ファイルはすべてそこにあるのですか?私はそれを確認しました(代わりにjar -tfを使用しています)。それは確かにそこにあります。質問に記載された構造 – Kumalh
Mac上に構築されたjarファイルはWindows上で動作しますが、Windows上に構築されたjarファイル動作しません。 2つのjarファイルの内容を比較します。同じバージョンのJavaを使用している場合は、.classファイルが同一である必要があります。 –