我正在制作一个Java 2D游戏,我是编程语言和游戏开发的新手,所以任何帮助对我来说都是极好的。 是的,首先我的java脚本中有一个错误,这里是:
线程中的异常"线程0" java.lang.IllegalArgumentException:input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1388)
at ca.gingerninja.game.gfx.SpriteSheet.<init>(SpriteSheet.java:19)
at ca.gingerninja.game.Game.init(Game.java:55)
at ca.gingerninja.game.Game.run(Game.java:78)
at java.lang.Thread.run(Thread.java:745)
这是我的代码的截图:
public class SpriteSheet {
public String path;
public int width;
public int height;
public int[] pixels;
public SpriteSheet(String path) {
BufferedImage image = null;
try {
image = ImageIO.read(getClass().getResource(path));
} catch (IOException e) {
e.printStackTrace();
}
if(image == null) {
return;
}
这是调试控制台中的错误:
public static BufferedImage read(URL input) throws IOException {
if (input == null) {
throw new IllegalArgumentException("input == null!");
}
如果您需要更多代码请问我,我会告诉他们。请帮我解决这个错误。
答案 0 :(得分:0)
错误意味着getClass()。getResource(path)返回一个空值而不是read方法所期望的资源。
答案 1 :(得分:0)
资源的路径需要在您的类路径中。您没有发布资源的路径,但我会引用此answer,因为它适用:
jar文件中(通常)没有目录。因此[e]会的 return null。
如果您想获取该文件,您可以直接获取该资源:
URL fileUrl = getClass()。getResource(“/ file.txt”); ...
或者简单地说:
InputStream fileInputStream = 。的getClass()的getResourceAsStream( “/ file.txt的”);
答案 2 :(得分:0)
使用'Eclipse IDE for Enterprise Java Developers'时出现相同的错误。
我通过更改项目的构建路径来修复它:
右键单击Project Explorer
下的项目名称。例如。 “ testGame”。
单击Build path
-> Configure build path...
,然后添加合适的JRE系统库。我使用jdk1.7.0_80
是因为jdk1.8
给了我问题。
该错误仍然存在,因为我在jdk1.7.0_80
上方列出了另一个系统库(我假设正在调用该库而不是jdk1.7.0_80
。)当我删除该库时,该错误已解决。 ,仅保留jdk1.7.0_80
库,并应用更改。
如果前两个步骤不起作用,请尝试将资源文件添加到构建路径。请参阅步骤1。 “ testGame / src”和“ testGame / res”共享相同的构建路径。