【问题标题】:Input == null java error输入== null java错误
【发布时间】:2013-07-02 20:52:37
【问题描述】:

您好,我遇到了一个烦人的错误,当无法加载图像时,它不断给我输入 == null 错误。这是代码。

  package Graphics;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

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(spritesheet.class.getResourceAsStream(path));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                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);
        }           
        public int[][] getsprite(int x, int y, int[][] pixels){
            int i = 0;
            for(int xx = 0;xx< 7;x++){
                for(int yy = 0; yy< 7;yy++){
                    pixels[xx][yy] = this.pixels[i];
                    i++;
                }
            }
            return pixels;
        }
    }   

我已经检查过了,目录完全正确。

错误

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at Graphics.spritesheet.<init>(spritesheet.java:20)
    at Tile.Tile.<init>(Tile.java:9)
    at Tiles.Wall.<init>(Wall.java:8)
    at Tiles.tiles.<init>(tiles.java:6)
    at Core.core.<init>(core.java:27)
    at Core.core.main(core.java:140)

【问题讨论】:

  • 确切的错误信息是什么?这段代码是怎么调用的? path 是什么?
  • 路径是它用来查找区域的字符串,所以如果我制作一个新的精灵表并将路径设置为 C://testfile.png 那么它会尝试从那里获取它。这就是给出错误的确切部分。
  • 你是怎么调用spritesheet构造函数的?
  • 通过 spritesheet s = new spritesheet(path);
  • 这里是目录 protected spritesheet s = new spritesheet("C:/Users/Lucas/workspace/Sprites/Blocks.png");

标签: java image exception io null


【解决方案1】:

使用FileImageInputStream 读取您的文件

ImageIO.read(new FileImageInputStream(new File(path)));

因为,您使用绝对路径(C:\test.png) 不要使用getresourceAsStream(),它用于从您的类路径 加载资源。其次,您不需要在路径中转义正斜杠。使用C:/testfile.pngC:\\testfile.png

参考:
ImageIO#read(javax.imageio.stream.ImageInputStream)

【讨论】:

  • Tiles.Wall 的 Graphics.spritesheet.getsprite(spritesheet.java:39) 的线程“main”java.lang.NullPointerException 中的异常。Tiles 的(Wall.java:9)。 tile.(tiles.java:6) 在 Core.core.(core.java:27) 在 Core.core.main(core.java:140) 它只是跳过图像 == null;当它试图在代码的底部搜索文件时它不起作用
  • @user2551633 使用 ImageIO.read(new FileImageInputStream(new File(path)));
  • 感谢您的所有帮助,这已解决。原来我在课堂上犯了一个错误
  • @user2551633 很高兴你把事情搞定了。
  • @user2551633 这可能很有趣,但尝试将图像复制到C:/x/file.png(而不是完全在 C:/ 中)并试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2015-05-13
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多