如何从Java中的资源加载图标?

时间:2011-12-28 20:33:53

标签: java swing

  

可能重复(已解决):https://stackoverflow.com/a/1133132/783469

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

示例:无法正常工作

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"
                  ));

3 个答案:

答案 0 :(得分:11)

资源加载发生在类路径中,相对于当前包。 如果您的类路径中有/var/tmp/gameXbox/src/,那么:

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

但是,IDE通常会在类路径中包含{em> <{1}}文件夹。尝试将图像添加到src文件夹。

答案 1 :(得分:4)

我通常使用class.getResource进行这种操作:

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

我使用它从jar存档中检索文件,但也应该从文件系统资源中检索。

答案 2 :(得分:0)

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