【问题标题】:Input == null in ImageIO.read [duplicate]ImageIO.read 中的输入 == null [重复]
【发布时间】:2016-12-18 07:19:09
【问题描述】:

是的,这是大约 100 篇不同帖子的副本,但没有一个解决方案对我有用。

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

frontPage = ImageIO.read(new File("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 时遇到同样的错误。

【问题讨论】:

  • 你是用jar打包图片吗?
  • @Marv 是的。我应该添加这个,但它在 Eclipse 中也这么说。

标签: java jar javax.imageio


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-08
    • 2015-05-13
    • 2013-03-03
    • 2016-05-28
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多