好的,这是我在创建可执行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对象。
任何帮助都非常有用,谢谢!
答案 0 :(得分:1)
只需对jar文件中的任何类使用静态引用:
URL url = SomeClass.class.getResource("/Images/references.png");
答案 1 :(得分: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);
}
}