2013-03-21 35 views
0

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

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

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

确保您清理并构建项目以确保所做的更改反映在已编译的代码和NetBeans缓存中 – MadProgrammer 2013-03-21 20:28:10

回答

1

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

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

但是,使用大写包名称与非常普遍的约定相反。

0

GetClass()函数应该可以工作。您也可以使用getAbsolutePath()

Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png")); 
相关问题