5

JAR内にパッケージ化されたファイルと、それを読み取るクラスから読み取ろうとしています。これを行うには、次を使用します。

getClass().getClassLoader().getResourceAsStream(file)

これは、OSX で JAR ファイルを作成して実行すると問題なく動作しますが、Windows で JAR ファイルを作成して実行すると、上記の行は null を返します。

ここで何か不足していますか?OSX で JAR を作成して Windows で実行すると、正常に動作します。この問題は、Windows で JAR を作成するときにのみ発生します。

編集: JAR ファイル内にフォルダー階層がないことに注意してください。すべてが 1 つのレベルに格納されるため、ファイルを読み取るクラスとファイル自体は両方とも同じディレクトリにあります。さらに、これは私がOSXとWindowsの両方でJARファイルを作成する方法です:

jar -cmf manifest.mf run.jar *.class file1 file2

編集 2: ロードしようとしているファイルは、java .properties ファイルです。それが問題の原因ではないと思いますか?

4

3 に答える 3

0

クラスローダの部分をスキップします。ただ getClass().getResource....

于 2013-04-12T00:53:26.767 に答える
0

ファイル セパレータを使用する場合は、ハード コードしないでください。代わりに java.io.File.separator を使用してください: http://docs.oracle.com/javase/7/docs/api/java/io/File.html#separator

于 2014-07-14T17:11:38.990 に答える