当我创建一个JAR时,JAR将不会读取其中的文件夹,只有JAR所在的文件夹中的文件夹.好的,那不是很具描述性.所以这是我编辑支持的照片.
我希望你现在明白这个想法.那么我该如何解决这个问题呢?我已经在eclipse中拥有了res和stats构建路径的一部分,现在是什么?
我用来读取资源的代码:
Image player;
player = new ImageIcon("res/player.png").getImage();
当使用ImageIcon并传递它时String,它期望参数引用a File.
来自JavaDocs
从指定的文件创建ImageIcon....指定的String可以是文件名或文件路径
文件和"资源"是不同的东西.
相反,尝试使用更像......的东西
new ImageIcon(getClass().getResource("res/player.png"));
Run Code Online (Sandbox Code Playgroud)
假设它res/player.png位于res目录一侧的jar中.
根据与尝试加载资源的类的关系以及资源的位置,您可能需要使用
new ImageIcon(getClass().getResource("/res/player.png"));
Run Code Online (Sandbox Code Playgroud)
代替...
更新
正如EJP指出的那样,您应该为可能找不到资源的情况做好准备.
URL url = getClass().getResource("/res/player.png");
ImageIcon img = null;
if (url != null) {
img = new ImageIcon(url);
}
// Deal with null result...
Run Code Online (Sandbox Code Playgroud)
你应该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...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |