java.util.zip.ZipException:无效的CEN头(错误签名)

java.util.zip.ZipException:无效的CEN头(错误签名),java,zip,Java,Zip,我在执行这段(相对简单的)代码时遇到了这个错误: ZipFile zf = new ZipFile(fn); Enumeration<? extends ZipEntry> eze = zf.entries(); while (eze.hasMoreElements()) { ZipEntry ze = eze.nextElement(); System.out.println(ze.getName()); }

我在执行这段(相对简单的)代码时遇到了这个错误:

    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();
ZipFile zf=新的ZipFile(fn);

枚举
7z l-slt
您的评论中提供的输出非常有用:

类型=zip 64位

提示它是ZIP64(ZIP规范的4.5版)。然而,尽管Java7支持它,但这种支持目前还没有后传到Java6,您必须求助于外部库,如Apache

另外,作为参考,
file test.zip
将输出如下内容

test.zip: Zip archive data, at least v4.5 to extract

唉,不幸的是,我不能。。有问题的文件是ginormous(707兆),我不会制作它们。嗯。。但是:我可以使用7z l-slt which.zip并获得'7-zip[64]9.20版权(c)1999-2010伊戈尔·巴甫洛夫2010-11-18 p7zip版本9.20(locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8个CPU)清单存档:./081212j400-13_file1of3.zip--Path=./081212j400-13_file1of3.zip Type=zip 64位=+物理大小=707951519`Hm。我似乎无法正确格式化它。希望它仍然会出现。如果你在*nix上,你的.zip文件
会说什么?或者你可以把第一个512kb左右的文件切掉放在某个地方。啊,它似乎是zip64:)AFAIR,对于java6,你必须求助于外部库(比如@barti_ddu),如果你把它变成一个答案,我会投票给你,并宣布它是正确的答案。。谢谢对我来说,文件格式是正确的,但是JAR超过了100MB,这使我们集群上的一些设置出错。希望这对某人有所帮助。当Zip大小超过4GB时,像7zip这样的Zip工具会自动更改为64位(显然)