我一直在尝试加载图像,它在日食中工作正常。但是当运行它编译时,它会因输入== 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
我已经读过与我相同错误的其他主题,但我还没能解决它。任何帮助将不胜感激,谢谢
答案 0 :(得分:2)
getResource[AsStream]()
需要/
分隔的路径。总是。无论您的平台是什么。不要使用File.separator
。使用/
。
答案 1 :(得分:1)
这几乎肯定是你班级路径的问题。
imageStream变量为null,因此您的类加载器无法找到该文件并加载它。从那以后,该方法注定要失败。
在IDE中运行时,Eclipse将为您设置路径,这意味着它可以正常运行。在命令行上运行它时,需要确保类路径与Eclipse的匹配。
我假设您有一个'images'文件夹,其中包含您的各种图像,但是您可以在已编译的JAR中还是在运行命令的类路径中使用该文件?