java.util.zip.ZipError:CEN标头无效(签名错误)

Jus*_*ble 14 java zip nio

我在Red Hat Linux上使用Java 1.7.0_40,我有以下代码:

Path zipfile = Paths.get(filename);
FileSystem fs = FileSystems.newFileSystem(zipfile, FileTest.class.getClassLoader());
Run Code Online (Sandbox Code Playgroud)

filename变量指向一个788MB的zip文件.zip文件的未压缩大小为8.3GB.当我运行上面的代码时,我得到以下异常:

Exception in thread "main" java.util.zip.ZipError: invalid CEN header (bad signature)
        at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
        at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1058)
        at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
        at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
        at java.nio.file.FileSystems.newFileSystem(FileSystems.java:386)
        at FileTest.readFromZip(FileTest.java:35)
        at FileTest.main(FileTest.java:25)
Run Code Online (Sandbox Code Playgroud)

我的印象是Java 7能够处理大型zip文件.任何人都可以解释为什么会这样吗?

谢谢.

Pun*_*dey 14

我也在基于Maven的项目中遇到了这个问题.问题发生的原因是罐子腐烂了.从.m2文件夹中删除了jar并重新构建了项目; 它就像魅力一样有效.


Tha*_*rai 10

出现此问题由于下载的jar文件已损坏.

如果你使用Maven

  • 要解决此问题,请在C:/Users/public/.m2/repository中删除特定Jar文件文件夹中.
  • 之后在POM.xml中添加新版Maven.
  • 重建并尝试.它会工作正常.