0

私は問題があります。現在のコードは、IntelliJで実行すると正常に機能しますが、Maven3で実行すると例外として失敗します。

 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:無効なリテラル/長さが設定されています
        java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)〜[na:1.7.0_06]で
        java.util.zip.ZipInputStream.read(ZipInputStream.java:193)〜[na:1.7.0_06]で
        java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:139)〜[na:1.7.0_06]で

WinZipなどを使用して手動で開くとZipファイルは問題なく表示されます。前述のように、IntelliJではすべてが完全に機能します。

ファイルエンコーディング、クラスローダー、その他すべてをデバッグして確認しましたが、すべてが同じように見えますが、Maven3を使用してテストを実行すると、コードは一貫して失敗しますが、IntelliJで動作します。

zis.closeEntry()で失敗します。例外を除いて。デバッグ中にストリームがまだ開いていることを確認しました。

Win7でJava1.6を使用しています。Maven3.0.4。他のバージョンのJavaを試しても、同じ結果になりました。

誰かが何が起こっているのか考えていますか?

4

2 に答える 2

0

次のものには興味がないので、closeEntry()は必要ありません。それを除く。また、bis.close()も必要ありません。zis.close()によって既に閉じられています。

于 2012-08-17T18:19:52.553 に答える
0

問題はZipファイルの破損でした...

私を驚かせたのは、すべてのエントリを含む目次が問題なく表示されたため、Zipファイルは問題ないと思いました。

実際にファイルの1つを解凍しようとすると、失敗しました。

于 2012-08-23T08:07:02.063 に答える