1

每当我制作 JAR 时,JAR 都不会读取其中的文件夹,只有 JAR 文件夹中的一个文件夹。好吧,这不是很具有描述性。所以这是我为支持而编辑的照片。在此处输入图像描述

我希望你现在明白了。那么我将如何解决这个问题?我已经在 Eclipse 中有构建路径的 res 和 stats 部分,现在怎么办?

我用来阅读资源的代码:

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

4

1 回答 1

5

在使用ImageIcon和传递 aString时,它期望参数引用 a File

来自JavaDocs

从指定的文件创建一个 ImageIcon。... 指定的 String 可以是文件名或文件路径

文件和“资源”是不同的东西。

相反,尝试使用更像...

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...
于 2013-11-14T23:53:46.023 回答