我知道这个问题已被讨论了数十亿次,但遗憾的是我无法解决这个问题。 我正在尝试加载我的资源文件夹中的图像。当我使用时:
public static BufferedImage[] readImages() {
BufferedImage img = null;
try {
img = ImageIO.read(new File("resources/imgs/map.png"));
} catch (IOException e) {
}
(参见screenshot)并运行程序,图像按原样加载。但是,当我创建.jar文件并尝试运行它时,不会访问该图像,我收到错误:
线程中的异常" main" java.lang.NullPointerException:在。的情况下,src图像为空 java.desktop / java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:214)
在MyClass.readImages(MyClass.java:100)
在MyClass.main(MyClass.java:21)
然后我尝试使用getResource()方法,但这并没有加载图像,我得到 NullPointerException 错误。
public static BufferedImage[] readImages() {
BufferedImage img = null;
try {
img = ImageIO.read(MyClass.class.getClass().getClassLoader().getResource("resources/imgs/map.png"));
} catch (IOException e) {
}
线程中的异常" main"显示java.lang.NullPointerException
在MyClass.readImages(MyClass.java:92)
在MyClass.main(MyClass.java:21)
有没有人知道如何通过使用"新文件(文件名)"将图像包含到.jar中。或者如何修复NullPointerException?
编辑:我的问题的解决方案是:
img = ImageIO.read(ClassLoader.getSystemClassLoader().getResourceAsStream("map.png"));
map.jpg位于" MyProject / resources / map.jpg"以及" MyProject / src / MyClass.java"中的脚本。