英文:
Loading image from res folder
问题
我正在完成作业中的编程游戏,尝试从"res"文件夹加载图像,但出现了"NullPointerException"错误:
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"类:
```java
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;
}
我在游戏类的"init"方法中使用它:
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");
都没有成功。
英文:
Iam coding game as part of my homework and I'm trying to load a image from res folder but I'm getting 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)```
The res folder is already in Java Build Path and I'm 99% sure that I'm putting in the right path. I got BufferedImageLoader Class:
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;
}
and I'm using it in inti metode in game class:
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));
}
I've looked at some similar problems of other people, but they mostly just used wrong path..
EDIT: I also tried
level = loader.loadImage("level.png");
and
level = loader.loadImage("/level.png");
neither worked.
答案1
得分: 0
尝试使用 level = loader.loadImage("level.png");
替代 level = loader.loadImage("/res/level.png");
如果您想获取资源,无需编写资源目录。
英文:
Try that level = loader.loadImage("level.png");
instead of level = loader.loadImage("/res/level.png");
If you are trying get resource you don't need to write resources directory.
专注分享java语言的经验与见解,让所有开发者获益!
评论