javax.imageio.IIOException不一致:IHDR块的长度不正确

javax.imageio.IIOException不一致:IHDR块的长度不正确,java,png,remote-debugging,Java,Png,Remote Debugging,我目前遇到了一个非常奇怪的错误:当我用参数-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

我目前遇到了一个非常奇怪的错误:当我用参数
-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
因为我真的,真的没有改变任何其他东西,我认为这与此无关,因为图像文件显然没有损坏

因为这对我来说是一个外国项目,它可能需要与第三方库或类似的东西做一些事情。如果可能的话,我使用的是Mac,Java 1.8.092


更新:如果我删除一个特定的jar文件,问题也会消失。但是,稍后我会得到
NoClassDefFoundError
s,因此需要jar文件。关于如何继续下去有什么想法和建议吗?

我终于能够解决这个问题,尽管我不完全确定是什么原因造成的,为什么是海森堡


正如在评论中所建议的那样,令人不快的jar确实是一个
ImageReaderSpi
,但它也有某种模糊运行时魔法。

该文件是一个常规PNG文件还是一个特殊的“iPNG”就像你提到的问题一样?它是一个普通的PNG文件,存储在某个jar文件中,如果我从类路径中删除了有问题的jar或添加了远程调试参数,就可以毫无问题地打开它……你能共享导致异常的文件吗?jar/库的名称也可能有帮助。。。请注意,
ImageIO
是基于插件的,因此,如果“违规”jar包含一个或多个
ImageReaderSpi
s,这可以解释一些问题。另外,额外的运行时参数(或纯粹的巧合)可能会改变已安装插件的顺序。但这似乎有点牵强。真的很奇怪。哇,这就是解决方案的暗示。如果我从有问题的jar文件中删除
META-INF/services
文件夹,问题也会消失。。。但另一种情况发生了。我不确定这两者是否有某种联系,因此还没有最终的解决方案。