こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

eclipseでjarファイル内のリソースファイルをうまく扱うには?

こんにちわ。

私は今、windows XP + eclipse 3.1.1(日本語化済)
でswingアプリケーションを作っています。
完成後は、実行可能jarファイルとして配布したいと考えています。

jarファイル内の画像ファイルを読み込んで、トグルボタンの
アイコンに使いたいので、メインクラス内で、

jToggleButton1.setIcon(new ImageIcon(getClass().getClassLoader().getResource("images/transition.jpg")));

という記述をしました。

「ファイル」→「エクスポート」→「jarファイル」
で、実行可能jarファイルを作ったときはちゃんと
画像が読み取れているのですが、

eclipseから直接実行をすると、以下のようなNullPointerException
が発生してしまいます。

java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at DTT.getJToggleButton1(DTT.java:261)
at DTT.getJPanel5(DTT.java:216)
at DTT.getJScrollPane(DTT.java:203)
at DTT.getJPanel(DTT.java:99)
at DTT.initialize(DTT.java:478)
at DTT.<init>(DTT.java:468)
at DTT.main(DTT.java:458)

(DTTという名前のアプリケーションなのです。。)

jarに出力する場合と、eclipseから直接実行する場合で
記述を変える必要があるのでしょうか?

それともデフォルト作業ディレクトリの指定などを適切に行えば
統一的に扱えるようになるのでしょうか?

なにとぞよろしくお願いします。

投稿日時 - 2005-11-21 17:24:23

QNo.1792864

すぐに回答ほしいです

質問者が選んだベストアンサー

classファイルが見えませんがclassファイルはbinフォルダに作られる設定で宜しいでしょうか。
それならimagesフォルダをsrcフォルダ内に移動してください。再コンパイルすればbinフォルダ下にimagesフォルダがコピーされ、その環境で実行すれば上手くいくと思います。

投稿日時 - 2005-11-22 13:02:49

お礼

回答ありがとうございます。

やってみたのですが、よくわかりません。

結局、getResource()がnullを返した場合は
パスを直接指定するようにif文を付けました。

迅速な対応、ありがとうございました。

投稿日時 - 2005-11-24 21:54:31

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

#1です。
jarファイルをEclipseから利用しようとしたものと極介してしまいました、申し訳ない。
#2にあるrinkun氏の指摘や相対パスのたどり方、パス基点を再確認してみてください。

#あまりお力になれていませんね、すみません。 m(__)m

投稿日時 - 2005-11-22 10:43:15

補足

なんどもありがとうございます。

>#あまりお力になれていませんね、すみません。 m(__)m

めっそうもございません。一緒に考えてくれる人がいるという
だけで恐れ多いことだと思います。。

投稿日時 - 2005-11-22 11:45:02

ANo.2

該当jpgファイルをJavaソースプログラムの対応位置に置いていますか。
置いておけばバイナリファイルでも同じ位置にコピーされていて読めると思いますけど。

投稿日時 - 2005-11-21 21:33:07

補足

回答ありがとうございます。

パスはあっていると思うのですが、どこかの
設定がおかしいのかうまくいきません。

ほかにも足りない情報があるかと思います。

ご指摘、ご教授よろしくお願いします。

投稿日時 - 2005-11-22 11:38:18

ANo.1

おそらくプロジェクトのプロパティなどで参照先のjarファイルとして登録されていないのではないかと。
classpathの設定に問題のjarファイルを追加してあげれば実行できそう。

はずれていたら申し訳ない。

投稿日時 - 2005-11-21 17:39:19

補足

えーっと、プロジェクトのプロパティで、ライブラリに
JARを追加するという意味でしょうか?

eclipseから直接実行するときは、jarファイルが生成
されていないので、指定しようがないと思うのですが。

すいません。意味がよくわかりません。

あまりeclipseに詳しくないもので。すみません。。

投稿日時 - 2005-11-21 18:38:12

お礼

すばやい回答ありがとうございます。
(挨拶をわすれてしまいました。。すいません。。)
もうすこしがんばってみます。

投稿日時 - 2005-11-21 18:44:58

あなたにオススメの質問