Iam编码游戏,这是我的家庭作业的一部分,我试图从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 Build Path中,并且我99%的确定要输入正确的路径。我得到了BufferedImageLoader类:
公共类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中使用它:私人无效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");
都没有用。
level = loader.loadImage("level.png");
代替level = loader.loadImage("/res/level.png");
如果您尝试获取资源,则无需编写资源目录。