【问题标题】:Inconsistent javax.imageio.IIOException: Bad length for IHDR chunk不一致的 javax.imageio.IIOException:IHDR 块的长度错误
【发布时间】:2019-08-17 20:32:36
【问题描述】:

我目前遇到一个非常奇怪的错误:当我使用参数-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 启动我的应用程序并通过 Eclipse 远程连接时,一切正常。当我删除此参数(没有其他任何更改)时,我得到以下异常:

Caused by: javax.imageio.IIOException: I/O error reading PNG header!
    at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:315) ~[na:1.8.0_92]
    at com.sun.imageio.plugins.png.PNGImageReader.readMetadata(PNGImageReader.java:654) ~[na:1.8.0_92]
    at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1248) ~[na:1.8.0_92]
    at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1606) ~[na:1.8.0_92]
    at javax.imageio.ImageIO.read(ImageIO.java:1448) ~[na:1.8.0_92]
    at javax.imageio.ImageIO.read(ImageIO.java:1400) ~[na:1.8.0_92]
    at com.jgoodies.application.ResourceConverters$DefaultConverter.convertImage(ResourceConverters.java:452) ~[retest.jar:1.2.0-SNAPSHOT]
    ... 43 common frames omitted
Caused by: javax.imageio.IIOException: Bad length for IHDR chunk!
    at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:247) ~[na:1.8.0_92]
    ... 49 common frames omitted

由于我真的,真的没有更改任何其他内容,我认为这与this problem 无关,因为图像文件显然没有损坏。

由于这对我来说是一个外国项目,它可能需要使用 3rd 方库或类似的方法。我在 Mac 上,Java 1.8.0_92,如果这可能相关的话。

更新:如果我删除特定的 jar 文件,问题也会消失。但是,后来我得到NoClassDefFoundErrors,所以需要jar文件。关于如何进行的任何想法和建议?

【问题讨论】:

  • 该文件是常规的 PNG 文件还是特殊的“iPNG”,如您所指的问题?
  • 这是一个常规的 PNG 文件,存储在一些 jar 文件中,如果我从类路径中删除有问题的 jar 或添加远程调试参数,则可以毫无问题地打开...跨度>
  • 可以分享导致异常的文件吗?并且 jar/库的名称可能会有所帮助...请注意 ImageIO 是基于插件的,因此如果“违规” jar 包含一个或多个 ImageReaderSpis,则可以解释一些问题。此外,额外的运行时参数(或纯属巧合)可能会改变已安装插件的顺序。但这似乎有些牵强。确实很奇怪。
  • 哇,这是解决方案的提示。如果我从有问题的 jar 文件中删除 META-INF/services 文件夹,问题也会消失......但会发生另一个问题。我不确定它们是否以某种方式连接,所以还没有最终解决方案。

标签: java png remote-debugging


【解决方案1】:

我终于能够解决这个问题,虽然我不完全确定是什么原因造成的以及为什么它是 Heisenbug。

正如haraldK 在评论中所建议的那样,有问题的 jar 确实有一个 ImageReaderSpi,但它也有某种混淆运行时的魔法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多