如何从Java资源加载图标?

问题描述:

可能重复(解决):https://*.com/a/1133132/783469如何从Java资源加载图标?

我有我的应用程序,存储在我的目录/var/tmp/gameXbox/src/image/<here>图标(JPG,PNG)。现在,我如何在应用程序中使用它们,而不使用硬链接而是作为资源?

实施例:不工作

IconForMyButton = ImageIO.read(new File(
        ClassLoader.getSystemResourceAsStream("image/button1.png") 
       )); 

enter image description here

作品时,我用硬链接做:

IconForMyButton = ImageIO.read(new File(
         "/var/tmp/gameXbox/src/image/button1.png" 
       )); 
+2

确保图像包含在应用程序的类路径中,并使用相对链接 – Robin 2011-12-28 20:35:25

+0

您要加载的内容是什么?来自classpath或文件系统的图像?这是一个区别。你在混合起来。 – 2011-12-28 20:57:55

+0

@Google:请先确认,您想在按钮上显示此图标,因为您的变量正在提示。我对吗? Regards – 2011-12-28 21:04:05

资源装载发生在类路径的地方,相对于当前包。 如果/var/tmp/gameXbox/src/是在类路径中,则:

ImageIO.read(ClassLoader.getSystemResource("image/button1.png")); 

但是,通常src文件夹包含在IDE的classpath中。尝试将图像添加到bin文件夹。

+0

project/build/classes/image/*存在。但不工作。看到我上面的编辑。 – YumYumYum 2011-12-28 20:53:57

+0

我编辑了我的答案。我甚至没有意识到。你正试图从'InputStream'创建'File'对象,而我则从'URL'创建。 – Darkhogg 2011-12-28 20:59:11

+0

import javax.imageio。*; (使用ImageIO) – shieldgenerator7 2015-03-12 16:14:23

我通常使用class.getResource对于这种操作的:

YourClass.class.getResource("image/button1.png") 

我用它来检索从JAR档案文件,但也应努力从文件系统资源检索。

图像不进入源文件夹,而是进入资源文件夹。修复您的IDE并使用Maven,它将与getResourceAsStream一起使用当前的上下文类加载器。