我有一个简单的测试用例,在jzlib中产生肯定的ArrayOutOfBoundException
1.0.7取决于随后写入一个实例的数据
ZOutputStream。

堆栈跟踪:

java.lang.ArrayIndexOutOfBoundsException: 587
    at com.jcraft.jzlib.Tree.d_code(Tree.java:149)
    at com.jcraft.jzlib.Deflate.compress_block(Deflate.java:691)
    at com.jcraft.jzlib.Deflate._tr_flush_block(Deflate.java:897)
    at com.jcraft.jzlib.Deflate.flush_block_only(Deflate.java:772)
    at com.jcraft.jzlib.Deflate.deflate_slow(Deflate.java:1195)
    at com.jcraft.jzlib.Deflate.deflate(Deflate.java:1567)
    at com.jcraft.jzlib.ZStream.deflate(ZStream.java:133)
    at com.jcraft.jzlib.ZOutputStream.write(ZOutputStream.java:102)
    at com.jcraft.jzlib.JZLibTestCase.main(JZLibTestCase.java:51)
       at JZLibTestCase.main(JZLibTestCase.java:28)


该问题很少发生,并且随后取决于数据
从jzlib写入打开的ZOutputStream。

您是否有解决方法的提示?你听说过吗?

最佳答案

据我所知,您可能已经发现JZlib的错误。在搜索时,我遇到了其他地方,这些地方的帖子都带有源文件和数据文件。看来您做错了什么。您应该能够将任何字节序列流式传输到ZOutputStream

您使用JZlib是否有特定原因?我了解使用它的两个主要原因是对Z_PARTIAL_FLUSH模式和许可的支持。如果不需要那种刷新模式,而您正在使用Oracle JVM,则只需使用随附的DeflaterOutputStream。将其替换为代码中的ZOuputStream毫无例外。

09-25 21:19