9

この(比較的単純な)コードを実行すると、このエラーが発生します。

    ZipFile zf = new ZipFile(fn);
    Enumeration<? extends ZipEntry> eze = zf.entries();
    while (eze.hasMoreElements()) {
        ZipEntry ze = eze.nextElement();
        System.out.println(ze.getName());
    }
    zf.close();

実際。興味深いことに、私は java-sun-6u32 と java-1.6.0-openjdk-amd64 でそれを取得しましたが、java-sun-7u4 は成功しました。unzip 自体は問題なく処理できるようです。これは、これらの zip ファイルが、おそらく Java 7 が理解する新しいバージョンの zip によって作成されていることを意味していると思いますが、以前のバージョンは理解していません。しかし、どんな洞察もいただければ幸いです。また、実稼働環境では実際に Java 7 を使用するオプションがないため、以前のバージョンの Java にこの新しいバージョンの zip を理解させる方法はありません (実際にそれ問題である場合はもちろん)。

ありがとう!

4

1 に答える 1

15

7z l -sltコメントで提供される出力は非常に役立ちます。

タイプ = zip 64 ビット

ZIP64 (バージョン 4.5 のZIP仕様)であるというヒントが得られます。ただし、Java7はサポートしていますが、現時点ではこのサポートはJava6にバックポートされておらず、Apache Compressなどの外部ライブラリに頼る必要があります。

PS参考までに、file test.zip次のようなものを出力します

test.zip: Zip archive data, at least v4.5 to extract
于 2012-09-10T22:09:01.170 に答える