2

私のプログラムは、画像を受け取るのに役立つ Image.class を使用しています。

Image img = new ImageIcon("Shooter2D/res/background.jpg").getImage();

プログラムが開発環境から実行されると、jarファイルをコンパイルした後、すべてが機能しますが、機能しません。IDE (Intellij IDEA) およびアーカイブで機能するパスを適切に設定する方法を教えてください。Shoter2D.jar には以下が含まれます。

- META-INF
Manifest-Version: 1.0
Main-Class: Shooter2Dv22082013.Main
- res
all pictures
- Shooter2Dv22082013
all .class files, main is Main.class

指標図: http: //imageshack.us/photo/my-images/801/eyjv.png/

4

1 に答える 1

3

ImageIcon のコンストラクターについてjavadocが述べていることは次のとおりです。

指定されたファイルから ImageIcon を作成します。画像は、MediaTracker を使用して画像の読み込み状態を監視することによってプリロードされます。指定する String は、ファイル名またはファイル パスです。

(私のものを強調)

画像はファイルに保存されません。ファイルシステムにはありません。それ自体がクラスパスにある瓶の中にあります。そして、それはあなたがそれをロードしたい場所です。アプリケーションの jar ファイルがエンドユーザーのマシン上にある場合、プログラムはこの jar ファイルからそれをロードしようとします。そして、この jar ファイル内のすべてのリソースは ClassLoader から利用できます。

だからあなたは使うべきです

new ImageIcon(MyClass.class.getResource("/res/background.jpg"))

また

new ImageIcon(MyClass.class.getClassLoader().getResource("res/background.jpg"))
于 2013-08-22T12:02:37.963 に答える