【发布时间】:2014-12-11 01:31:11
【问题描述】:
我目前正在编写游戏,但遇到了这个错误。
我该如何解决?
IllegalArgumentException 出现的代码在 SpriteScreen.java
中SpriteScreen.java
package game.gfx;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class SpriteSheet {
public String path;
public int width, height;
public int[] pixels;
public SpriteSheet(String path) {
BufferedImage image = null;
try {
image = ImageIO.read(SpriteSheet.class.getResourceAsStream(path)); //THIS IS LINE #18 (WHERE THE ERROR IS OCCURING)!
} catch (IOException e) {
e.printStackTrace();
}
if (image == null) {
return;
}
this.path = path;
this.width = image.getWidth();
this.height = image.getHeight();
pixels = image.getRGB(0, 0, width, height, null, 0, width);
for (int i = 0; i < pixels.length; i++) {
pixels[i] = (pixels[i] * 0xff) / 64;
}
for (int i = 0; i < 8; i++) {
System.out.println(pixels[i]);
}
}
}
错误
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at game.gfx.SpriteSheet.<init>(SpriteSheet.java:18)
at game.Game.<init>(Game.java:24)
at game.Game.main(Game.java:130)
【问题讨论】:
-
您确定该资源存在?
-
试试调试器。我的猜测是
SpriteSheet.class.getResourceAsStream(path)返回null。 -
是的,我有一个 sprite_sheet.png 位于 res 文件夹中,它位于 src 文件夹之外。所以我打电话给 res/sprite_sheet.png...但是会抛出这个错误。
-
阅读
Class.getResourceAsStream的文档。