2012-08-17 54 views
0

我遇到问题。目前的代码工作正常,当我运行它通过的IntelliJ, 但它有一个异常失败,当我在Maven中运行它3.关闭ZipInputStream在IntelliJ中正常工作,但在Maven中出现异常

public static boolean isZipContent(InputStream inputstream) throws IOException { 
    BufferedInputStream bis = new BufferedInputStream(inputstream); 
    ZipInputStream zis = new ZipInputStream(bis); 
    ZipEntry ze = zis.getNextEntry(); 
    if (ze == null) { 
     return false; 
    } 
    zis.closeEntry(); 
    zis.close(); 
    bis.close(); 
    return true; 
} 

例外:

 
java.util.zip.ZipException: invalid literal/lengths set 
     at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164) ~[na:1.7.0_06] 
     at java.util.zip.ZipInputStream.read(ZipInputStream.java:193) ~[na:1.7.0_06] 
     at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:139) ~[na:1.7.0_06] 

的zip文件蛮好看的时候我使用WinZip或其他方式手动打开它们 - 正如我所说的,IntelliJ中的所有功能都完美无缺。

我已经调试并检查文件编码,类加载器和一切,一切看起来平等的,但仍是一贯的代码失败,如果我跑使用Maven3测试,但在工作的IntelliJ。

它未能在zis.closeEntry();除了例外。 我确保在调试过程中流仍然打开。

我使用Java 1.6,Win7上。 Maven 3.0.4。我试过其他版本的Java,结果相同。

有没有人有什么事的想法?

+0

在这两种情况下你使用的是同一个zip文件吗?你是如何创建它的?如果您没有使用WinZip创建它,请尝试使用WinZip创建一个zip文件并使用该zip文件。只要可能,WinZip就会更正zip文件,所以您可以使用WinZip查看zip文件并不能保证它是一个很好的zip文件。 – 2012-08-17 18:40:45

+0

是的,它是相同的zip文件。它由一些程序创建。请注意,它在IntelliJ中运行时可以工作,所以它可能不是zip文件的问题... – DKIT 2012-08-21 07:38:54

回答

0

的问题是腐败的Zip文件...

什么扔我是,与所有条目内容的表看了看就好了,所以我认为Zip文件的罚款。

有一次,我想真正把它解压失败的一个文件。

0

你不需要closeEntry(),因为你不感兴趣的下一个。去掉它。你也不需要bis.close():它已经被zis.close()关闭了。

相关问题