Java 图像IO异常
我得到以下错误:Java 图像IO异常,java,javax.imageio,Java,Javax.imageio,我得到以下错误: javax.imageio.IIOException: Can't read input file! Resource not found: C:\icon.gif at javax.imageio.ImageIO.read(ImageIO.java:1301) at connector.SystemTrayCreator.createImage(SystemTrayCreator.java:98) at connector.SystemTrayCreator.create(S
javax.imageio.IIOException: Can't read input file!
Resource not found: C:\icon.gif
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at connector.SystemTrayCreator.createImage(SystemTrayCreator.java:98)
at connector.SystemTrayCreator.create(SystemTrayCreator.java:36)
at connector.Start.main(Start.java:14)
Exception in thread "main" java.lang.IllegalArgumentException: creating TrayIcon with null Image
at java.awt.TrayIcon.<init>(TrayIcon.java:168)
at connector.SystemTrayCreator.create(SystemTrayCreator.java:36)
at connector.Start.main(Start.java:14)
Java Result: 1
与
我确信这条路是正确的。而且,名称匹配
有人知道出了什么问题吗?您的代码似乎很好。理论上可能存在两个问题:
canRead()
,这就是ImageIO.read
的作用。它必须返回true
路径
参数的末尾可能有一些空格。使用trim()
消除这种可能性根据堆栈跟踪,
createImage()
方法返回null,然后TrayIcon
构造函数对此有问题。您确定文件位于该位置吗?它返回null
,因为它的try块无法加载图像。我们需要解释这一失败。它的stacktrace是输出转储中的第一个。是的,我确信文件位于该位置。另外,我不认为您需要更多的代码,我只使用该方法中的路径@Marko Topolnik你可以看到我得到的输出,但这也帮不了我更多…我想我也有同样的问题。你曾经解决过这个问题吗?我把这个文件放在我自己的用户目录中,但它仍然给出相同的错误。关于trim()的建议很明智,尽管这不是问题所在……请努力使canRead()
返回true
。我真的看不出你的代码有任何问题。我也没有。谢谢。你是不是碰巧从浏览器中的小程序执行了这段代码?这可以解释很多。不,在本地执行。即使尝试将它放在C:\或C:\用户\用户名\文档中,它仍然无法读取。更奇怪的是,我实际上能够以完全相同的方式读写其他文件。这一个根本看不懂。
final TrayIcon trayIcon =
new TrayIcon(createImage("C:\\icon.gif", "Tray icon"));
protected static Image createImage(String path, String description) {
Image image = null;
try {
File f = new File(path);
image = ImageIO.read(f);
} catch (Exception e) {
e.printStackTrace();
}
if (image == null) {
Debugger.showMessage("Resource not found: " + path);
return null;
} else {
return (new ImageIcon(image, description)).getImage();
}
}