javax.imageio.iioexception不一致:IHDR块的长度不良



i当前遇到一个非常奇怪的错误:当我使用参数-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.0_92,如果这可能相关。

更新:如果我删除特定的JAR文件,则问题也会消失。但是,然后我稍后获得NoClassDefFoundError S,因此需要JAR文件。有什么想法,有关如何进行的建议?

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

Haraldk在评论中建议的确实是 ImageReaderSpi的帽子,但它也有某种混淆的运行时间 - 魔术。

最新更新