无法访问资源文件夹中的文件

Can't Access File in Resources Folder

我正在尝试加载存储在 /src/main/resources 文件夹中的图像。但是,当我这样做时,我会 运行ning 进入一个 NullPointerException,该异常源于未找到资源。

这是代码片段:

        try {
            String path = this.getClass().getClassLoader().getResource("bern.png").toString();
        } catch (IOException ex) {
            System.out.println(path);
        }

这是我的项目文件树的图像:

这是我的目标构建文件树的图像:

这是 NullPointerException 堆栈跟踪: https://pastebin.com/KqJVxWEL

我已经尝试很好地使用我能想到的图像文件的所有可能路径。 (/src/main/resources/bern.png、src/main/resources/bern.png、/bern.png 等)。

我也尝试过使用 getClass().getClassLoader().getResource() 而不是 getClass().getResource()。据我了解,getResource()ClassClassLoader 版本之间的唯一区别是 Class 版本本质上不是绝对相对于根的,而 ClassLoader 版本是。

当我运行 getClass().getResource("").toPath()时,我得到了通往classes目录的路径。这与我读到的有关使用目标构建文件树的 getResource() 方法的内容一致。但是,我没有看到资源文件夹出现在目标构建中的任何地方;我认为这是我问题的核心。我只是不确定如何解决它。

我知道这个问题以前被问过很多次,但是这个问题的另一个版本的答案对我帮助不大。

我正在使用 NetBeans 11,此项目 运行正在 Maven 构建系统上运行。我过去没有用 Maven 做过太多工作,所以如果这个问题非常容易解决,请原谅我。

有人知道我是如何处理这个错误的吗?

编辑:问题不在于我的项目结构或代码,正如代码在通过命令行使用 运行 使用 mvn 时正确编译所显示的那样。因此,这是 NetBeans 的一个问题,特别是它查看资源文件夹的方式。

将资源内容作为流读取(而不是 URL 或文件路径)

public static void main(String[] args) throws IOException {
        InputStream in = Application.class.getClassLoader().getResourceAsStream("bern.png");
        BufferedImage testImage = ImageIO.read(in);
        ImageIcon icon = new ImageIcon(testImage);
    }