Java游戏错误,输入== null?

时间:2014-07-19 10:54:25

标签: java

我正在制作一个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!");
        } 

如果您需要更多代码请问我,我会告诉他们。请帮我解决这个错误。

3 个答案:

答案 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'时出现相同的错误。

我通过更改项目的构建路径来修复它:

  1. 右键单击Project Explorer下的项目名称。例如。 “ testGame”。 单击Build path-> Configure build path...,然后添加合适的JRE系统库。我使用jdk1.7.0_80是因为jdk1.8给了我问题。

  2. 该错误仍然存​​在,因为我在jdk1.7.0_80上方列出了另一个系统库(我假设正在调用该库而不是jdk1.7.0_80。)当我删除该库时,该错误已解决。 ,仅保留jdk1.7.0_80库,并应用更改。

  3. 如果前两个步骤不起作用,请尝试将资源文件添加到构建路径。请参阅步骤1。 “ testGame / src”和“ testGame / res”共享相同的构建路径。