Intellij找不到.png

时间:2013-09-03 21:05:39

标签: java maven intellij-idea

我的intellij无法找到本地.png图片。

private String craft = "craft.png";
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));

.png与java文件位于同一目录中。我不明白为什么它不起作用。尝试使用maven构建,尝试从资源到java的交替,但仍然没有运气:(

3 个答案:

答案 0 :(得分:3)

craft.png必须放在src/main/resources中,否则根据Maven规则不会将其复制到类路径中。有关详细信息,请参阅this answer

您的代码也应更改为:

private String craft = "/craft.png";

这是sample working project

答案 1 :(得分:1)

  

尝试从资源交替到java

首先,您尝试将craft.png放入src/main/resources。这是必须根据Maven(不在src / main / java中)放置的地方。

但它没有用,因为 this.getClass().getResource("craft.png")尝试找到相对于 this.class包的“craft.png”。如果您的 this.class 位于 foo.bar 包中,则必须将 craft.png 放入src/main/resources/foo/bar/

您还可以使用前导斜杠/在getResource()中提供绝对路径。例如,将craft.png放入资源src/main/resources/customFolder/下的自定义文件夹中,并使用 customFolder 前面的前导斜杠/读取它:
this.getClass().getResource("/customFolder/craft.png")

如果你不在getResource()方法中使用前导斜杠,那么内部类的包名前置于资源名称以使其成为绝对名称。 Class.getResource()

中解释了此行为

答案 2 :(得分:0)

转到IntelliJ偏好设置并搜索“资源模式”(或直接进入“编译器”设置)。

IntelliJ只会将某些资源复制到输出目录。确保资源模式包含* .png。

我的资源模式设置为!*。java(复制所有不是源文件的内容),这似乎工作正常(在我看来应该是默认的)。