0

好的,这是我在创建可执行 JAR 文件时尝试遇到的一个大问题的一小部分。我需要移动我的图像,以便它们可以放在另一个包中,以便可以在任何地方找到它们。我正在使用以下方法加载我的 BufferedImage:

private static BufferedImage loadRefDigits() {
    try {
        return ImageIO.read(new File("src/package/references.png"));

    } catch (IOException e) {
        throw new RuntimeException(" Error reading reference digits", e);
    }
}

但是,在 jar 中找不到此图像,因此我尝试使用:

URL imageURL = this.getClass().getResource("/Images/references.png");

但这是一种非静态方法,我一直试图弄清楚如何使用此方法获取 BufferedImage 对象。

任何帮助都会非常有用,谢谢!

4

2 回答 2

1

只需对 jar 文件中的任何类使用静态引用:

URL url = SomeClass.class.getResource("/Images/references.png");
于 2013-04-14T15:02:56.543 回答
0

我相信这会让你朝着正确的方向前进。

public static BufferedImage getClasspathImage(String name) {
    Objects.requireNonNull(name);

    URL url = Images.class.getClassLoader().getResource(name);
    if (url == null) {
        String fmt = "cannot find resource [%s]";
        throw new IllegalStateException(String.format(fmt, name));
    }

    try (InputStream stream = url.openStream()) {
        return ImageIO.read(stream);
    }
    catch (IOException e) {
        String fmt = "cannot read resource [%s] at [%s]";
        String err = String.format(fmt, name, url);
        throw new IllegalStateException(err, e);
    }
}
于 2020-08-17T14:57:26.637 回答