Java jar没有从jar中读取文件,只有外部文件夹?

时间:2013-11-14 23:47:37

标签: java jar external

当我制作JAR时,JAR将不会读取其中的文件夹,只有JAR所在的文件夹中的文件夹。好的,那不是很具描述性。所以这是我编辑支持的照片。enter image description here

我希望你现在明白这个想法。那么我该如何解决这个问题呢?我已经在eclipse中有res和stats构建路径的一部分,现在是什么?

我用来读取资源的代码:

Image player; player = new ImageIcon("res/player.png").getImage();

1 个答案:

答案 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...