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

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

Path zipfile = Paths.get(filename); FileSystem fs = FileSystems.newFileSystem(zipfile, FileTest.class.getClassLoader()); 

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

 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.(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) 

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

谢谢。

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

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

如果你使用Maven

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

有两种可能的解释:

这是pom文件中maven编译器的配置问题。 java源码和目标的默认版本是1.5,即使使用JDK也有更高的版本。

要修复,请添加具有更高java版本的maven编译器插件配置部分,例如:

  org.apache.maven.plugins maven-compiler-plugin 3.6.1  1.6 1.6   

有关更多信息,请查看以下链接

maven编译器

错误报告