当我制作JAR时,JAR将不会读取其中的文件夹,只有JAR所在的文件夹中的文件夹。好的,那不是很具描述性。所以这是我编辑支持的照片。
我希望你现在明白这个想法。那么我该如何解决这个问题呢?我已经在eclipse中有res和stats构建路径的一部分,现在是什么?
我用来读取资源的代码:
Image player;
player = new ImageIcon("res/player.png").getImage();
答案 0 :(得分:5)
使用ImageIcon
并向其传递String
时,预计该参数会引用File
。
来自JavaDocs
从指定的文件创建ImageIcon。 ...指定的字符串 可以是文件名或文件路径
文件和“资源”是不同的东西。
相反,请尝试使用更像......
的内容new ImageIcon(getClass().getResource("res/player.png"));
假设res/player.png
位于res
目录旁边的jar中。
根据与尝试加载资源的类的关系以及资源的位置,您可能需要使用
new ImageIcon(getClass().getResource("/res/player.png"));
,而不是...
<强>更新强>
有些建议,正如EJP指出的那样,你应该准备好找不到资源的可能性。
URL url = getClass().getResource("/res/player.png");
ImageIcon img = null;
if (url != null) {
img = new ImageIcon(url);
}
// Deal with null result...
你应该使用ImageIO.read
来阅读图像。除了它支持更多(并且可以支持更多未来)图像格式这一事实之外,它会在返回之前加载图像,如果无法读取图像,则会抛出IOException
...
URL url = getClass().getResource("/res/player.png");
ImageIcon icon = null;
if (url != null) {
try {
BufferedImage img = ImageIO.read(url);
icon = new ImageIcon(img);
} catch (IOException exp) {
// handle the exception...
exp.printStackTrace();
}
}
// Deal with null result...