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。
- 重建并尝试。 它会工作正常。
有两种可能的解释:
-
你有一个损坏的ZIP文件 – 在maven2中编译错误:“无效的CEN标题(错误的签名)”
-
这与ZIP-64有关:
-
java.util.zip.ZipException:CEN标头无效(签名错误)
-
但另请注意,ZIP-64支持显然仅在1.7.0_b55中添加… https://blogs.oracle.com/xuemingshen/entry/zip64_support_for_4g_zipfile
-
这是pom文件中maven编译器的配置问题。 java源码和目标的默认版本是1.5,即使使用JDK也有更高的版本。
要修复,请添加具有更高java版本的maven编译器插件配置部分,例如:
org.apache.maven.plugins maven-compiler-plugin 3.6.1 1.6 1.6
有关更多信息,请查看以下链接
maven编译器
错误报告