2012-08-17 66 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()關閉了。

相關問題