1

私はこれを正しく理解できないようです...

EclipseにMyProjectというJavaプロジェクトがあります。そのルートには、bin、src、およびresourcesフォルダーがあります。リソースの中に、という名前の画像がありmyImage.gifます。

私のコードでは、このイメージを使用したいと思います。これがJarファイルから実行されているかどうかに関係なく機能するようにします。私は現在これをやっています

ImageIcon j = new ImageIcon(getClass().getResource("/resources/myImage.gif"));

しかし、Eclipseで実行すると(Jarとしてではなく)nullが吐き出されます。

これを行う正しい方法は何ですか?

4

2 に答える 2

1

Eclipseにresourcesソースフォルダーとして扱うように指示する場合は、次のように言うことができます。

ImageIcon j = new ImageIcon(getClass().getResource("/myImage.gif"));

JARをビルドするときはresources、同じパスがJARの場合に機能するように、ディレクトリの内容がJARファイルの最上位にあることを確認する必要があります。

META-INF
  MANIFEST.MF
com
  example
    MyClass.class
myImage.gif

または、おそらくより一般的なJavaイディオムとして、画像ファイルをファイルと同じディレクトリ.javasrc/com/exampleこの場合)にgetResource配置し、先頭にスラッシュを付けずに使用します。

new ImageIcon(getClass().getResource("myImage.gif"));

Class.getResource問題のクラスのパッケージに対して、そのような相対パスを解決します。繰り返しになりますが、それを構築するときは、JARで同じ構造を持っている必要があります。今回はmyImage.gifunderを使用しcom/exampleます。

于 2013-02-12T22:37:13.527 に答える
0

リソースをsrcに配置すると、Eclipseはそれをbinにコピーします。

ImageIcon ii =
   new ImageIcon(
      ImageIO.read(
         getClass().getClassLoader().getResourceAsStream(
            "resources/myImage.gif" )));

パスなし/パスの前。

于 2013-02-12T22:31:49.240 に答える