在 ImageIO.read 中输入 == null
Input == null in ImageIO.read
是的,这是大约 100 个不同帖子的副本,但是 none 的解决方案对我有用。
我在游戏中定义图片的方式是这样的:
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 中遇到了同样的错误。
new File()
与getResource()
完全不同。前者从文件系统加载文件,后者从类路径加载。这两种方法可能会产生相同的结果,而 运行 您的应用程序来自 IDE 但 运行 它来自打包的 jar 要求资源位于类路径中,这通常意味着它们必须位于罐。如果您使用 Maven 作为构建工具,您只需将您的资源放在 src/main/resources
中即可将它们添加到您的 jar 中。
是的,这是大约 100 个不同帖子的副本,但是 none 的解决方案对我有用。
我在游戏中定义图片的方式是这样的:
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 中遇到了同样的错误。
new File()
与getResource()
完全不同。前者从文件系统加载文件,后者从类路径加载。这两种方法可能会产生相同的结果,而 运行 您的应用程序来自 IDE 但 运行 它来自打包的 jar 要求资源位于类路径中,这通常意味着它们必须位于罐。如果您使用 Maven 作为构建工具,您只需将您的资源放在 src/main/resources
中即可将它们添加到您的 jar 中。