0

我正在尝试resource在 Netbeans 11 上的 maven 项目中使用一个目录。当我使用 Netbeans 构建我的代码时,我无法正确访问目录中的文件resources——但是,当我使用mvn通过构建和运行代码时它工作正常命令提示符。

更具体地说,我正在尝试加载bern.png存储在位于 的目录中的图像/src/main/resources。但是,当我使用以下代码尝试访问这些资源时,toString()在对以下结果调用时遇到了 NullPointerException getResource()

String path = this.getClass().getClassLoader().getResource("bern.png").toString();

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

mvn但是,当我通过命令行构建和运行项目时,项目构建没有问题。

因此,问题一定出在 Netbeans 查看resources我创建的文件夹的方式上。

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

我的项目文件树的图像

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

我的目标构建文件树的图像

resources通过创建一个New > Folderin来创建目录main。如您所见,bern.pngresources目录中没有填充目标构建。

但是,在通过命令行构建和运行项目后mvnbern.png确实会填充:

使用 mvn 构建后目标构建文件树的图像

我找到了几篇关于此的文章,但没有一篇有帮助。javaquery的这篇文章指的是Netbeans 8.0,它的说明不再像Netbeans 11中那样使用。这个StackOverflow答案指的是Netbeans 7.2,并且按照他们的建议简单地创建目录在Netbeans 11中对我不起作用。这个StackOverflow答案是为 Netbeans 8.0 编写的,也没有工作。

说了这么多,有谁知道如何resources使用 NetBeans 11 正确创建目录?

4

2 回答 2

0

对于Netty 客户端/服务器框架示例 http2/tiles,我在 Netbeans 11.3 下使用 Maven 项目时遇到了同样的问题。因为使用netty-all-4.1.50.Final-sources.jario/netty/example/http2/tiles中的源文件,所以 jpg 资源文件与 java 文件一起位于目录中。将此目录复制到 Netbeans Maven 项目的子目录src/main/java会导致问题,即这些资源文件不包含在目标 jar 文件中。

main/resources解决方案是在 Netty Github 存储库https://github.com/netty/netty/tree/4.1/example/src/main中的子目录中找到资源文件。构建项目时,此位置的资源文件会自动添加到目标 jat 文件中。

于 2020-07-02T15:56:53.370 回答
0

问题不在于 Netbeans 错误地查看了目录——问题在于 Netbeans 11 的默认 Maven 构建没有正确识别目录。将 Netbeans 的 Maven 系统切换到 Maven 网站上的最新二进制文件解决了这个问题。

于 2019-10-12T02:25:22.653 回答