4

皆さん、

Eclipse を使用して Java アプリケーションを開発しています。Maven を使用して、最終的な jar ファイルを作成します。

アプリケーションでは、ボタンにいくつかの画像アイコンを使用しています。インターネット上のいくつかの指示に従って、プロジェクトをクリックして「ソース」ディレクトリを作成しました。ソース ディレクトリに「res」という名前を付け、画像をこのディレクトリに移動しました。


public static ImageIcon getIcon() {
  if (isThisJarfile()) {
     URL url = this.class.getResources("/res/myicon.png");
     return new ImageIcon(url);
  }else {
     return new ImageIcon("/res/myicon.png");
  }
}

これは、アプリが jar ファイルとしてパッケージ化されていない場合に正常に機能します (デバッグに最適)。ただし、maven でパッケージ化すると、イメージが jar ファイルのルート ディレクトリに置かれていることがわかります。次の呼び出しが機能します。

    URL url = this.class.getResource("/myicon.png");

私が見落としたステップがあるかどうか疑問に思っています。

画像の pom.xml に特別なことをする必要はなかったことに注意してください。Maven はそれらを自動的にピックアップしました (間違った場所に配置していることを除いて)。

よろしくお願いいたします。

よろしく、ピーター

4

3 に答える 3

7

標準の Maven プロジェクト ディレクトリ構造に従っている場合は、Java 以外のすべてのリソースを の下に配置することをお勧めしますsrc/main/resources。たとえばimages、フル パスがsrc/main/resources/images. このディレクトリには、すべてのアプリケーション イメージが含まれます。

アプリケーションをパッケージ化するときに、イメージに適切にアクセスできるように特別な注意を払う必要があります。たとえば、次の関数は必要なすべてを実行する必要があります。

public static Image getImage(final String pathAndFileName) {
    final URL url = Thread.currentThread().getContextClassLoader().getResource(pathAndFileName);
    return Toolkit.getDefaultToolkit().getImage(url);
}

この関数は、画像ディレクトリにファイルgetImage("images/some-image.png")をロードするために使用できます。some-image.png

が必要な場合ImageIconは、単に呼び出すだけでnew ImageIcon(getImage("images/some-image.png"))うまくいきます。

于 2012-05-05T19:00:10.163 に答える