speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

jarから実行とEclipseで実行でリソースパスが違う?

画像ファイルなんかを扱うときの話.

Eclipseでプロジェクト直下にresourcesフォルダを作って,そこに画像ファイルを置いていたとします.

普通にEclipseから実行する分には,次のような感じでいける.

Image image = new ImageIcon("resources/hoge.gif").getImage();

なんだけど,jarファイルにExportしてコマンドプロンプトとか別のところで実行してみると,どうやらファイルが見つからないらしい.

で,jarファイルで実行する場合は,次のようにする.

URL url = this.getClass().getClassLoader().getResource("resouorces/hoge.gif");
Image image = new ImageIcon(url).getImage();

いやはや,解決,解決.よかった,よかった.かと思ったら,今度はEclipseでうまく動かない.urlがnullになってしまう.

結局,ようわからんので次のような感じにしたけど,他に何とかなるもんかな.

String imageFileName = "resources/hoge.gif";
URL imageUrl = this.getClass().getClassLoader().getResource(imageFileName);

Image image = (imageUrl != null) ? new ImageIcon(imageUrl).getImage()
                                 : new ImageIcon(imageFileName).getImage();

こちらを参考にしましたよ.
http://www.northvan.jp/?p=17