【发布时间】:2020-04-10 18:35:22
【问题描述】:
我将编码游戏作为我作业的一部分,我正在尝试从 res 文件夹加载图像,但我收到 NullPointerException:
```Exception in thread "Thread-0" java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1400)
at prg_hra/esrever.BufferedImageLoader.loadImage(BufferedImageLoader.java:15)
at prg_hra/esrever.Hra.init(Hra.java:38)
at prg_hra/esrever.Hra.run(Hra.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)```
res 文件夹已经在 Java 构建路径 中,我 99% 确信我输入了正确的路径。我得到了 BufferedImageLoader 类:
public class BufferedImageLoader {
private BufferedImage image;
public BufferedImage loadImage(String path) {
try {
image = ImageIO.read(getClass().getResource(path));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
我在游戏类的 inti metode 中使用它:
private void init() {
WIDTH=getWidth();
HEIGHT=getHeight();
BufferedImageLoader loader = new BufferedImageLoader();
level = loader.loadImage("/res/level.png");
handler = new Handler();
kam=new Kamera(0,0);
handler.addObjekt(new Hrac(100, 100, handler, ObjektID.Hrac));
handler.createLevel();
this.addKeyListener(new KeyInput(handler));
}
我看过其他人的一些类似问题,但他们大多只是使用了错误的路径..
编辑:我也试过
level = loader.loadImage("level.png");
和
level = loader.loadImage("/level.png");
都没有用。
【问题讨论】:
-
"res/"相对于你的类路径在哪里(在运行时)?没有这些信息,就无法判断正确的路径是什么......
标签: java classpath bufferedimage