0

我有一个使用探戈图标的 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(这是一个摇摆应用程序)。

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 回答