包括可执行jar文件中的图像图标

时间:2014-08-12 06:23:44

标签: java image swing jar embedded-resource

我正在制作国际象棋游戏,我已经把它运行得很好,但我希望能够将它作为JAR文件导出以方便使用。但是当我导出它时,我放在JButtons上的象棋图标就不存在了。我的图像存储在一个单独的文件夹中,调用与src和JRE系统库相同级别的图像。香港专业教育学院尝试使用getClass().getResource(string)方法,但它给了我一个空指针异常。香港专业教育学院在文章中尝试了类似问题的答案,例如this。但无济于事

1 个答案:

答案 0 :(得分:1)

您很可能传递了错误的资源名称,并且由于类加载器找不到它,getResource()将返回null

Class.getResource(String name)期望资源名称​​ relative 到加载类的位置。因此,如果您的资源被称为image.jpg,则image.jpg必须位于您正在调用其getResource()方法的类所在的文件夹中。

如果用/字符启动它,你也可以在jar中指定一个绝对文件夹:

getClass().getResource("/resources/images/image.jpg");

在这种情况下,image.jpg必须位于jar内部的/resources/images文件夹中或源文件夹中(由IDE将其复制到bin文件夹中)。

与具有".."字面值的类的文件夹相比,您还可以向上导航一个(或多个)文件夹,例如:

getClass().getResource("../images/image.jpg");

在这种情况下,image.jpg文件必须位于父文件夹的images子文件夹中,而不是类的文件夹。

注意: Class对象,您调用的getResource()方法可以像YourClassName.class一样获取,或者您想要引用当前实例的类:getClass()