0

Tango アイコンを使用する Java/Maven プロジェクトがあるため、次の依存関係を使用しています。

<dependency>
    <groupId>org.freedesktop.tango</groupId>
    <artifactId>tango-icon-theme</artifactId>
    <version>0.8.90</version>
</dependency>

そして、プロジェクトをmavenに移動する前に問題なく動作する次のコード:

imageIcon = new ImageIcon(this.getClass().getResource(org/freedesktop/tango/22x22/actions/address-book-new.png));

ただし、何らかの理由で NullPointerException が発生するようになりました。生成された jar には画像が含まれておらず、それらを参照することもありませんが、他の jar のクラスは含まれています。

多くのことを調査しましたが、ほとんどの人が画像をソースにバンドルしていることがわかりました。これは私の場合ではありません。

これらのイメージを適切に参照および/またはパッケージ化するには、maven に対して何をする必要がありますか? Maven でスタンドアロンの実行可能な jar をビルドするにはどうすればよいですか (これは Swing アプリケーションです)。

4

1 に答える 1

1

パスの前にスラッシュを追加すると、次のように機能します。

ImageIcon imageIcon = new ImageIcon(this.getClass().getResource("/org/freedesktop/tango/22x22/actions/address-book-new.png"));

APIから:

委任の前に、次のアルゴリズムを使用して、指定されたリソース名から絶対リソース名が構築されます。

名前が「/」(「\u002f」) で始まる場合、リソースの絶対名は、「/」に続く名前の部分です。それ以外の場合、絶対名は次の形式になります。
modified_pa​​ckage_name/name modified_pa​​ckage_name は、このオブジェクトのパッケージ名で、「.」を「/」に置き換えたものです。('\u002e')。

于 2012-03-15T04:59:05.447 に答える