【问题标题】:How do I fix IllegalArgumentException?如何修复 IllegalArgumentException?
【发布时间】: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的文档。

标签: java applet japplet


【解决方案1】:

代码看起来不错。我认为问题在于路径。您确定在输入中输入了正确的路径吗?尝试以“/”开头的路径。例如“/resources/sprite_sheet.PNG”

【讨论】:

  • 这行得通,但是,它会在我的 SpriteScreen 类中抛出一个 ArrayIndexOutOfBoundsException 异常:pixels[tilePixel++] = colors[color];
  • 表示您尝试访问的数组的索引为负数或大于数组的大小
【解决方案2】:

试试这个希望它能解决你的问题:

   if (image.equal("")) {
     return;
  } 

【讨论】:

  • 仍然抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 2012-08-24
  • 2012-07-08
  • 2016-08-02
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多