重複の可能性:
jar内にファイルをロード
最後に、jarファイルをほぼ正しく機能させました。ほとんどの場合、jarファイルを作成した直後にテストして起動すると、アーカイブに含まれている画像が表示されます。しかし、jarファイルを他のディレクトリに移動して起動しようとすると、画像の欠落に関する例外が発生します(ただし、アプリケーションは引き続き機能しますが、その画像は表示されません)。
これは私のディレクトリでどのように見えるかです:
[aqv@voland Converter]$ ll
razem 112
-rw-rw-r--. 1 aqv aqv 51673 10-30 20:42 Converter.java
-rw-rw-r--. 1 aqv aqv 23 10-30 20:41 Converter.mf
-rw-rw-r--. 1 aqv aqv 1167 10-30 20:43 GBC.java
-rw-rw-r--. 1 aqv aqv 1023 10-30 20:58 ImagePanel.java
-rw-rw-r--. 1 aqv aqv 44729 10-30 20:35 programHelp.png
-rw-rw-r--. 1 aqv aqv 3713 10-30 20:43 SettingsManager.java
[aqv@voland Converter]$
[aqv@voland Converter]$
画像ファイルはImagePanelから呼び出され、programHelpは文字列であり、適切なメソッドに渡されます。
public ImagePanel() {
programHelp = "programHelp.png";
try {
helpImage = ImageIO.read(new File(programHelp));
} catch (IOException e) {
e.printStackTrace();
}
}
ご覧のとおり、ディレクトリが指定されていないので、メインクラスはjarのメインディレクトリで画像を探す必要があると思いますね。
私は次の方法でjarファイルを作成します(もちろん、ファイルをコンパイルした後):
[aqv@voland Converter]$ jar cvfm Converter.jar Converter.mf *.class *.png
[aqv@voland Converter]$
画像ファイルは、クラスファイルの中でjarアーカイブ内に表示されます。私の質問:この場合の画像ファイルの配置の何が問題になっていますか?