在ImageIO.read中输入== null

时间:2016-12-17 22:59:42

标签: java jar javax.imageio

是的,这是100个不同帖子的重复,但没有一个解决方案对我有效。

我在游戏中定义图片的方式是:

frontPage = ImageIO.read(新文件(" frontpage.png"));

到目前为止它运行良好,但现在,我将它作为jar文件导出并使用Jar2Exe将其转换为exe。我从来没有遇到过这个问题。

但是,要导出它并使其可读,我将其更改为:

frontPage = ImageIO.read(this.getClass()。getResource(" /frontpage.png"));

我现在收到此错误:

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at com.teamxf.Game.<init>(Game.java:80)
    at com.teamxf.Game.main(Game.java:62)

第80行是上面的一行,我定义了frontPage。

第62行是我在main方法中调用构造函数的地方。我在构造函数中定义了图像。

导致此问题的原因是什么?

编辑:运行时我在eclipse中遇到了同样的错误。

1 个答案:

答案 0 :(得分:2)

new File()getResource()完全不同。前者从文件系统加载文件,后者从类路径加载文件。从IDE运行应用程序时,这两种方法都可能产生相同的结果,但是从打包的jar运行它需要资源在类路径上,这通常意味着它们必须在jar中。如果您使用Maven作为构建工具,则只需将资源放在src/main/resources中即可将其添加到jar中。