我有一个使用探戈图标的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应用程序)。
答案 0 :(得分:1)
如果在其工作路径之前添加斜杠:
ImageIcon imageIcon = new ImageIcon(this.getClass().getResource("/org/freedesktop/tango/22x22/actions/address-book-new.png"));
来自API:
在委托之前,从中构造绝对资源名称 使用此算法给定资源名称:
如果名称以'/'('\ u002f')开头,则绝对名称为 资源是'/'后面的名称部分。除此以外, 绝对名称具有以下形式:
modified_package_name / name其中modified_package_name是 这个对象的包名称用'/'代替'。' ( '\ u002e')。