0

完全不解。我愿意:

URL resource = this.getClass().getResource("eye-visible.png");

并且 URL 的计算结果为 null。“eye-visible.png”是与我的类在同一个包中的一个文件,即“Controller.java”:

在此处输入图像描述

我也试过(实际上我是从这个开始的):

InputStream inputStream = Controller.class.getResourceAsStream("eye-visible.png");

这也返回 null 。

真的卡住了 - 有什么线索吗?

这是一个模块化项目,我在 JDK14 上运行。我将 NetBeans 用于 IDE。上面的行在 JavaFX 应用程序的 start 方法中。我在一个只有一个主类的新 java 项目中用上面的行重现了相同的空输出:相同的效果。

4

1 回答 1

0

感谢@Andreas的评论,

-> 非.java文件未复制到.class文件的位置(只是忽略)。

这是使用 Maven 构建的结果,默认情况下它具有这种行为(只有其中的文件src/main/resources将被复制到单独的位置)。

解决方法是将此片段添加到POM.xml(根据this answer to another question):

<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>
于 2021-01-22T18:20:27.400 回答