0

我正在使用 NetBeans 并将图像加载到我的程序中,到目前为止,我一直将所有图像存储在 src/images/ 中,这很好。但是我想把我所有的包名都大写,所以我把它们都重构了,所以它们都是大写的。所以“图像”变成了“图像”。我更改了所有文件路径字符串以反映这一点,但是当我下次运行我的程序时,没有任何图像会加载。我在项目的构建部分中找到了另一个名为 images 的文件夹,其中包含一些我需要的图像,因此我将 src 图像文件夹中的所有内容复制到 /build/classes/images 文件夹中,然后奇迹般地它又开始工作了。到目前为止,我一直将所有图像放在 src/images/ 部分。

那么实际发生了什么?我是否需要开始将程序所需的所有新图像保存在 /build/classes/images 或旧位置?图像加载代码现在决定在一个完全不同的地方查看是怎么回事?为什么有两个版本的图像文件夹?这是 NetBeans 生成的一些奇怪的东西吗?

ImageIO.read(myClass.class.getResource("/images/myClassImg.png");
4

2 回答 2

1

资源文件可以与 jar 中的所有 .class 文件一起打包。然后它不是文件系统上的文件。因此,路径名区分大小写并使用“/”作为路径分隔符。通常,资源 URL 区分大小写。

上面应该是“/Images/myClassImg.png”。

然而,使用大写的包名与非常普遍的约定背道而驰。

于 2013-03-21T20:23:19.397 回答
0

GetClass()功能应该可以工作。您也可以使用getAbsolutePath().

Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png"));
于 2013-03-22T13:49:59.490 回答