2012-01-15 9 views
11

私は画像を表示する必要がある簡単なプログラムを持っています。 私はこのコードをEclipseから実行する方法を知っていて、JARファイルから実行する方法を知っていますが、どちらの場合でもうまくいくソリューションがほしいです。JARまたはファイルシステムからImageIconをロードしています

Eclipseプロジェクトのようなある:

- Project (java) 
    - src 
    - controller 
     - Main.java 
    - ui 
     - Display.java 
    - images 
    - image.jpg 

Eclipse内から動作するコードスニペット:

ImageIcon image = new ImageIcon("images/image.jpg); 

JAR(単一のJARファイル内のすべて)のために働くいずれか

java.net.URL imgURL = getClass().getResource("/images/image.jpg"); 
ImageIcon image = new ImageIcon(imgURL); 

両方の場面で動作する1つのコードを取得するには、何を変更する必要がありますかons?

+0

両方の状況で2回目の試行を試しましたか?それはちょうどあなたのためのあなた自身の質問に答えるかもしれません(そして、あなたに答えをここで待たなければならない時間を節約してください)! –

+2

<タップ、タップ、タップ...>こんにちは?このマイクはオンですか? –

+0

@HovercraftフルEels。はい、明らかに私はどちらの場合でも両方のコードスニペットを試しました。 – Martijn

答えて

9

srcフォルダ内imagesフォルダを入れ、そしてEclipseは彼らがあなたのjarファイルにあったかのように、クラスパスからそれらを利用できるようになる、ターゲットフォルダ(一般binまたはclasses、)に画像をコピーしますあなたのアプリのリリース版。

getResource()瓶の中には見えません。クラスローダーのクラスパスを調べます。画像が瓶に入っているかどうかは重要ではありません。それはクラスパスになければなりません。そして明らかにEclipseのターゲットフォルダ(binまたはclasses)は、Eclipseから起動するときに、アプリケーションのランタイムクラスパスにあります。

+0

ありがとう! 'src'の中の' images'フォルダを動かすことは確かに解決策でした。私の2番目のコードスニペットは、EclipseとJarから実行したときの両方で変更されていませんでした。 – Martijn

関連する問題