Java 静态缓冲区从非静态镜像
好的,这只是我在创建可执行JAR文件时遇到的一个大问题的一小部分。我需要移动我的图像,以便它们可以在另一个包中,以便它们可以在任何地方找到。我在加载我的BuffereImage时使用了:Java 静态缓冲区从非静态镜像,java,static,jar,bufferedimage,non-static,Java,Static,Jar,Bufferedimage,Non Static,好的,这只是我在创建可执行JAR文件时遇到的一个大问题的一小部分。我需要移动我的图像,以便它们可以在另一个包中,以便它们可以在任何地方找到。我在加载我的BuffereImage时使用了: private static BufferedImage loadRefDigits() { try { return ImageIO.read(new File("src/package/references.png")); } catch (IOException e) {
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");
但这是一个非静态的方法,我一直在试图找出如何使用这个方法获取BuffereImage对象
任何帮助都会非常有用,谢谢 只需对jar文件中的任何类使用静态引用:
URL url = SomeClass.class.getResource("/Images/references.png");
我相信这将为你指明正确的方向
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);
}
}
为什么该方法是静态的,在什么时候调用该代码?为了更快地获得更好的帮助,请发布一个。