我有一个简单的测试用例,在 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
不会出现异常。
关于java - jzlib 1.0.7 : ArrayOutOfBoundException in ZOutputStream. 写(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5646101/