【问题标题】:Loading image from res folder从 res 文件夹加载图像
【发布时间】: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


【解决方案1】:

尝试使用level = loader.loadImage("level.png"); 而不是level = loader.loadImage("/res/level.png");

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

【讨论】:

  • 我试过了,同时也将 level.png 放置在代码文件夹中的所有其他文件夹中,但仍然是相同的异常
  • 你是否在你的IDE中将res目录设置为Resource文件夹。
  • (Eclipse) 你的意思是属性-> Java 构建类-> 库-> 添加类文件夹?是的,我这样做了,但是我必须单击模块路径或类路径才能单击添加类文件夹
  • 可能我很久没用Eclipse了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 2012-07-28
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多