java.util.zip.DataFormatException: invalid distance too far back
2015-06-17 11:51
537 查看
解压 war/jar文件时出现以下错误:
java.util.zip.ZipException: invalid distance too far back
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:478)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readDeflated(ZipArchiveInputStream.java:443)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.read(ZipArchiveInputStream.java:384)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.compress.utils.IOUtils.copy(IOUtils.java:75)
at org.apache.commons.compress.utils.IOUtils.copy(IOUtils.java:56)
at com.xunge.AESFileEncoder$1.run(AESFileEncoder.java:149)
at java.lang.Thread.run(Unknown Source)
Caused by: java.util.zip.DataFormatException: invalid distance too far back
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Unknown Source)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:476)
… 7 more
相关代码:
以上代码是没有问题,如果使用 pin 的代码和 pin 的声明代码中间隔了太多的代码就会产生此异常。具体没有做试验,也可能是有逻辑判断语句的原因。
java.util.zip.ZipException: invalid distance too far back
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:478)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readDeflated(ZipArchiveInputStream.java:443)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.read(ZipArchiveInputStream.java:384)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.compress.utils.IOUtils.copy(IOUtils.java:75)
at org.apache.commons.compress.utils.IOUtils.copy(IOUtils.java:56)
at com.xunge.AESFileEncoder$1.run(AESFileEncoder.java:149)
at java.lang.Thread.run(Unknown Source)
Caused by: java.util.zip.DataFormatException: invalid distance too far back
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Unknown Source)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:476)
… 7 more
相关代码:
PipedInputStream pin = new PipedInputStream(); PipedOutputStream pout = new PipedOutputStream(pin); new Thread(new Runnable() { public void run() { try { IOUtils.copy(ais, pout); pout.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); ArchiveInputStream inJar = new ArchiveStreamFactory() .createArchiveInputStream(ArchiveStreamFactory.JAR, pin);
以上代码是没有问题,如果使用 pin 的代码和 pin 的声明代码中间隔了太多的代码就会产生此异常。具体没有做试验,也可能是有逻辑判断语句的原因。
相关文章推荐
- 提高你的Java代码质量吧:推荐使用枚举定义常量
- Mac中Eclipse连不上Android手机的解决方法
- java 查看ssl log
- Eclipse在调试时,显示出16进制数据
- Java 读数据库字段时发现的一个现象
- java字符串分割性能比较
- struts2.xml 中result type属性说明
- Java开发时,如何设计Java类及业务流程
- java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
- Java NIO系列教程(九) ServerSocketChannel
- Java NIO系列教程(八) SocketChannel
- Struts,Spring,Hibernate三大框架的面试
- 设置 MyEclipse 默认打开文件方式
- 给eclipse换肤,自己的小窍门。
- JAVA中的一些基本概念
- struts2国际化
- Java求n的阶乘
- 在Eclipse中主题预览失败Theme preview fails in Eclipse
- FAQ How do I increase the heap size available to Eclipse?
- Spring学习笔记(11)----自定义属性编辑器