![](/img/trans.png)
[英]java.lang.OutOfMemoryError when doing javax.imageio.ImageIO.read(“filename”)
[英]java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source)
我正在尝试将图标图像设置为
private void formWindowActivated(java.awt.event.WindowEvent evt) {
try {
Image img=ImageIO.read(getClass().getResource("images/logo.png"));
setIconImage(img);
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
在NetBeans上编译后,代码似乎可以正常工作,但是如果我从cmd运行jar文件,则会收到IllegalArgumentException。我似乎不明白如何在第一种情况下而不是另一种情况下可见图像。
这将在Windows(不区分大小写的文件系统)下发生,在Windows上,未压缩的类路径上的Images/Logo.PNG
可能会成功加载,而从jar (zip存档)启动(路径是区分大小写的)时,加载会失败。
更正文件大小写可能很麻烦(版本控制等),因此重命名可能更有用。
备注:
如果(actual!)类位于包xyz
,则jar中的目录路径为x/y/z/images/logo.png
。
因此,要考虑的替代方法是非子类引用和绝对路径:
Image img=ImageIO.read(Xyz.class.getResource("images/logo.png"));
Image img=ImageIO.read(getClass().getResource("/u/v/w/images/logo.png"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.