加载图像时输入== null

时间:2016-06-26 11:25:57

标签: java

我一直在尝试加载图像,它在日食中工作正常。但是当运行它编译时,它会因输入== null而崩溃。获取图标的方法如下:

public ImageIcon getIcon(String iconName){
    InputStream imageStream = this.getClass().getClassLoader().getResourceAsStream("images"+File.separator+iconName);
    InputStream t = this.getClass().getClassLoader().getResourceAsStream("images");

    Image image = null;
    try
    {
        image  = ImageIO.read(imageStream);
        return new ImageIcon(image);
    }
    catch(IOException e){
        return null;
    }
    catch(IllegalArgumentException e){
        System.out.println(e.getMessage());
        System.out.println("Image folder stream: Im"+t);
        System.out.println("Image folder + image stream: "+imageStream);
        return null;
    }
}

控制台输出是:

input == null!
Image folder stream:sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@14b4656e
Image folder + image stream: null
input == null!
Image folder stream:sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@3a81e634
Image folder + image stream: null

我已经读过与我相同错误的其他主题,但我还没能解决它。任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:2)

getResource[AsStream]()需要/分隔的路径。总是。无论您的平台是什么。不要使用File.separator。使用/

答案 1 :(得分:1)

这几乎肯定是你班级路径的问题。

imageStream变量为null,因此您的类加载器无法找到该文件并加载它。从那以后,该方法注定要失败。

在IDE中运行时,Eclipse将为您设置路径,这意味着它可以正常运行。在命令行上运行它时,需要确保类路径与Eclipse的匹配。

我假设您有一个'images'文件夹,其中包含您的各种图像,但是您可以在已编译的JAR中还是在运行命令的类路径中使用该文件?