我的 intellij 找不到本地 .png 图像。
private String craft = "craft.png";
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));
.png 与 java 文件位于同一目录中。我不明白为什么它不起作用。使用 maven 构建,尝试从资源交替到 java,但仍然没有运气:(
我的 intellij 找不到本地 .png 图像。
private String craft = "craft.png";
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));
.png 与 java 文件位于同一目录中。我不明白为什么它不起作用。使用 maven 构建,尝试从资源交替到 java,但仍然没有运气:(
转到您的 IntelliJ 首选项并搜索“资源模式”(或直接转到“编译器”设置)。
IntelliJ 只会将某些资源复制到输出目录。确保资源模式包含 *.png。
我将资源模式设置为 !*.java (复制不是源文件的所有内容),这似乎工作正常(在我看来应该是默认设置)。
尝试从资源交替到 java
因此,起初您尝试将craft.png 放入src/main/resources
. 那是它必须根据 Maven 放置的地方(不是在 src/main/java 中)。
但它不起作用,因为
this.getClass().getResource("craft.png")
试图找到相对于this.class 的 package的“craft.png” 。如果您的this.class在包foo.bar中,那么您必须将craft.png放入src/main/resources/foo/bar/
您还可以使用前导斜杠在 getResource() 中提供绝对路径/
。例如,将 craft.png 放入 resources 下的自定义文件夹中,并使用customFolder前面的src/main/resources/customFolder/
斜杠读取它:/
this.getClass().getResource("/customFolder/craft.png")
如果您不在getResource()
方法中使用前导斜杠,则内部类的包名称将附加到资源名称之前以使其绝对。此行为在Class.getResource()中进行了解释