使用maven在jar中使用图像资源

时间:2012-03-15 04:33:23

标签: maven jar bundle tango

我有一个使用探戈图标的java / maven项目,所以我使用以下依赖项:

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

以下代码,在我将proyect移动到maven之前可以正常工作:

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

但是,由于某种原因,它现在导致NullPointerException。 生成的jar不包含图像,也不以任何方式引用它们,但是其他jar中的类是。

我已经调查了很多,但我发现大多数人用他们的来源捆绑他们的图像。这不是我的情况。

我需要做些什么才能让maven有效地参考和/或打包这些图像? 如何让maven构建一个独立的可运行jar(这是一个swing应用程序)。

1 个答案:

答案 0 :(得分: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')。