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