我正在使用NetBeans并将图像加载到我的程序中,到目前为止,我已经将所有图像存储在src / images /中,这很好。但是我想把我所有的包名都大写,所以我重构了所有包名,以便它们被大写。所以"图像"变成"图像"。我更改了所有文件路径字符串以反映这一点,但是当我运行我的程序时,下次没有任何图像会加载。我在项目的构建部分找到了另一个名为images的文件夹,其中包含了我需要的一些图像,所以我将所有内容从我的src图像文件夹复制到/ build / classes / images文件夹中,然后奇迹般地再次开始工作。到目前为止,我已经将所有图像放在src / images /部分中。
那么实际发生了什么?我是否需要在/ build / classes / images或旧位置开始保存我想要的所有新图像?现在图像加载代码决定在一个完全不同的地方看起来怎么样?为什么图像文件夹有两个版本?这是NetBeans生成的一些奇怪的事情吗?
ImageIO.read(myClass.class.getResource("/images/myClassImg.png");
答案 0 :(得分:1)
资源文件可以与jar中的所有.class文件一起打包。然后它不是文件系统上的文件。因此,路径名称区分大小写,并使用“/”作为路径分隔符。通常,资源URL区分大小写。
上面应该是“/Images/myClassImg.png”。
然而,使用大写的包名与非常普遍的约定相反。
答案 1 :(得分:0)
GetClass()
功能应该有效。您也可以使用getAbsolutePath()
。
Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png"));