6

这真让我抓狂。我在具有以下结构的文件夹中有一个 NetBeans 项目:

MyProject
---- build
---- src
---- resources

在 src 我的代码在包中。我想做的是使用

getClass().getResource("/resources/new.png"); 

来自 com.my.package 包中的一个类,但它只是拒绝工作!“new.png”图像位于资源文件夹中。我在这里错过了什么吗?

经过大量玩耍并到处移动“new.png”图像以查看它何时会找到图像,它终于起作用了,但只有当我将图像放入构建文件夹时。那么我该怎么做才能完成这项工作?

编辑:对不起,方法参数中的字符串错误。现已更正

4

3 回答 3

3

我不熟悉 NetBeans,但问题可能是resources文件夹(或项目的根,就此而言)不在类路径上,不像build.

您需要配置 NetBeans 以添加根文件夹或resources类路径,并加载相对于那里的文件。

另请参阅此问题:Java - getClassLoader().getResource() 让我发疯

于 2012-09-15T19:10:25.673 回答
0

这工作正常:

BufferedImage image = ImageIO.read(getClass().getClassLoader().getResourceAsStream("file_name"));
于 2017-06-01T06:50:22.697 回答
0

小心ImageIO.read(getClass().getClassLoader().getResourceAsStream("file_name"));

...在 Windows 上,您将获得一个 URL 编码字符串,其中 %20 用于空格,因此如果您想使用该路径加载文件,请首先调用 pathString.replace("%20", " ") ... $hice 刚刚把我钉在了现场!

于 2022-02-27T10:25:17.087 回答