从res文件夹加载图像

问题描述 投票:0回答:1

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");都没有用。

java classpath bufferedimage
1个回答
0
投票
尝试用level = loader.loadImage("level.png");代替level = loader.loadImage("/res/level.png");

如果您尝试获取资源,则无需编写资源目录。

© www.soinside.com 2019 - 2024. All rights reserved.