我正在使用NetBeans并将图像加载到我的程序中,到目前为止,我一直将所有图像存储在src/images/中,这很好。但是我想把所有的包名都大写,所以我对它们进行了重构,使它们都大写。于是"images"变成了"images"。我改变了所有的文件路径字符串来反映这一点,但当我下次运行我的程序时,没有一个图像会加载。我在项目的构建部分找到了另一个名为images的文件夹,其中有一些我需要的图像,所以我将src image文件夹中的所有内容复制到/build/classes/images文件夹中,然后奇迹般地它又开始工作了。到目前为止,我一直把所有的图像放在src/images/部分。
那么到底发生了什么呢?我是否需要开始在/build/classes/images或旧地方保存我想要的程序的所有新映像?图像加载代码现在决定在一个完全不同的地方看是怎么回事?为什么图像文件夹有两个版本?这是NetBeans产生的一些奇怪的东西吗?
ImageIO.read(myClass.class.getResource("/images/myClassImg.png");
资源文件可以用jar中的所有.class文件打包。然后它就不是文件系统上的文件了。因此,路径名是区分大小写的,并使用'/'作为路径分隔符。一般来说,资源url是区分大小写的。
它的上方应该是"/Images/myClassImg.png"
GetClass()
函数应该可以工作。您也可以使用getAbsolutePath()
Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png"));