【发布时间】:2012-03-06 00:22:51
【问题描述】:
我有一个小的 GUI,其中包括一些 JSlider 和你有什么。我可以将它导出为 .jar,它可以毫无问题地运行。然后我决定添加一些图像,并将它们放在 Eclipse 包中的子文件夹中。现在,当我导出文件并尝试运行它时,出现以下错误(在终端中运行时)
Henry-MAC:desktop 2010imac01$ java -jar trust.jar
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at trust.GUI.<init>(GUI.java:75)
at trust.main.main(main.java:11)
经过大量谷歌搜索后,我认为这与 .jar 未包含在我的清单中(eclipse 生成)有关。如何在清单中查看/添加必要的类路径。
这是我打开图片的部分(我认为是错误)
try {
n = ImageIO.read((this.getClass().getResource("smiles/n.png")));
s5 = ImageIO.read((this.getClass().getResource("smiles/5.png")));
s4 = ImageIO.read((this.getClass().getResource("smiles/4.png")));
s3 = ImageIO.read((this.getClass().getResource("smiles/3.png")));
s2 = ImageIO.read((this.getClass().getResource("smiles/2.png")));
f5 = ImageIO.read((this.getClass().getResource("smiles/-5.png")));
f4 = ImageIO.read((this.getClass().getResource("smiles/-4.png")));
f3 = ImageIO.read((this.getClass().getResource("smiles/-3.png")));
f2 = ImageIO.read((this.getClass().getResource("smiles/-2.png")));
smile = new Easel(n);
} catch (IOException e) {
System.out.println("error");
}
【问题讨论】:
-
图像是否正确嵌入到您的 jar 中?看起来类加载器找不到您的图像,因此返回 null
-
我认为@GuillaumePolet 是对的,虽然为了以后的参考,当你捕捉到异常时不要只输出
error。使用e.printStackTrace()(如果你正在为生产构建一些东西,或者更好的日志框架),这样你的错误消息就可以告诉你一些事情,而不仅仅是告诉你在某处发生了故障。 -
我认为它们是,它们在名为 trust 的主包中的一个名为 smiles 的包中
-
@ChrisThompson 如何引用 jar 中的图像?
-
如何创建 .jar?如果您查看 .jar 内部(通过解压缩),是否有图像?
标签: java eclipse jar export manifest