URL 资源 = this.getClass().getResource("file-name") 为空
URL resource = this.getClass().getResource("file-name") is null
百思不得其解。
我愿意:
URL resource = this.getClass().getResource("eye-visible.png");
并且 URL 的计算结果为空。 "eye-visible.png"是和我的class在同一个包里的一个文件,就是"Controller.java":
我也试过了(其实我是从这个开始的):
InputStream inputStream = Controller.class.getResourceAsStream("eye-visible.png");
和这个 returns 也为 null。
真的卡住了 - 有什么线索吗??
这是一个模块化项目,我运行在JDK14上。我将 NetBeans 用于 IDE。上面几行是在 JavaFX 应用程序的启动方法中。我在一个只有主 class 的新 java 项目中使用上面的行重现了相同的空输出:相同的效果。
感谢 @Andreas、
的评论
-> 非 .java
文件未复制到 .class
文件的位置(只是被忽略)。
这是使用 Maven 构建的结果,默认情况下具有此行为(只有 src/main/resources
中的文件将被复制到单独的位置)。
修复方法是将此片段添加到 POM.xml
(根据 this answer 另一个问题):
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
</build>
百思不得其解。 我愿意:
URL resource = this.getClass().getResource("eye-visible.png");
并且 URL 的计算结果为空。 "eye-visible.png"是和我的class在同一个包里的一个文件,就是"Controller.java":
我也试过了(其实我是从这个开始的):
InputStream inputStream = Controller.class.getResourceAsStream("eye-visible.png");
和这个 returns 也为 null。
真的卡住了 - 有什么线索吗??
这是一个模块化项目,我运行在JDK14上。我将 NetBeans 用于 IDE。上面几行是在 JavaFX 应用程序的启动方法中。我在一个只有主 class 的新 java 项目中使用上面的行重现了相同的空输出:相同的效果。
感谢 @Andreas、
的评论-> 非 .java
文件未复制到 .class
文件的位置(只是被忽略)。
这是使用 Maven 构建的结果,默认情况下具有此行为(只有 src/main/resources
中的文件将被复制到单独的位置)。
修复方法是将此片段添加到 POM.xml
(根据 this answer 另一个问题):
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
</build>