首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Java8JAR命令从zip存档中提取4GB+文件时,“无效的CEN (错误签名)”

使用Java8JAR命令从zip存档中提取4GB+文件时,“无效的CEN (错误签名)”
EN

Stack Overflow用户
提问于 2019-07-08 14:13:43
回答 1查看 836关注 0票数 1

我有一个压缩文件,其中包含5个文件。其中四个文件很小(几个kB),但一个文件大于4GB。我知道JDK-4681995,它从Java 7开始向Java添加了大型文件支持( 64位压缩支持),在Windows8.1上使用64位Java 8:

代码语言:javascript
运行
复制
C:\Users\user\Desktop>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

zip文件大小如下:

代码语言:javascript
运行
复制
07/07/2019  10:18 AM       503,966,751 snapshot-20190707.zip

zip文件的内容如下:

代码语言:javascript
运行
复制
07/07/2019  09:53 AM                67 database.sha1
07/07/2019  09:51 AM     4,508,840,068 database.sql
07/07/2019  09:53 AM                74 database_schema.sha1
07/07/2019  09:51 AM            36,386 database_schema.sql
07/07/2019  09:51 AM            45,280 backup.log

如果我试图提取4GB文件,就会遇到一个与64位压缩文件的Java 7异常完全相似的异常。

代码语言:javascript
运行
复制
C:\Users\user\Desktop>jar xvf snapshot-20190707.zip database.sql
java.util.zip.ZipException: invalid CEN header (bad signature)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:225)
        at java.util.zip.ZipFile.<init>(ZipFile.java:155)
        at java.util.zip.ZipFile.<init>(ZipFile.java:126)
        at sun.tools.jar.Main.extract(Main.java:1004)
        at sun.tools.jar.Main.run(Main.java:305)
        at sun.tools.jar.Main.main(Main.java:1288)

有任何方法可以使用Java 8+ jar命令从64位压缩归档中提取jar文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 14:29:17

此异常是由Java8中的bug JDK-8223811引起的,该错误由-f标志触发。提交者使用以下方法重新创建问题:

代码语言:javascript
运行
复制
jar xvf archive.zip *

来自bug报告的评论(2019年5月19日):

这只能在JDK 8版本上重复使用。它是在JDK 9和更高版本中修复的,在最新的JDK 11、12或13中不是一个问题。

Java 8的解决方法是避免在使用-f标志时指定单个文件,只需提取存档中的所有文件:

此版本的命令成功地提取了所有文件,没有任何问题:

代码语言:javascript
运行
复制
C:\Users\user\Desktop>jar xvf snapshot-20190707.zip
 inflated: backup.log
 inflated: database_schema.sha1
 inflated: database_schema.sql
extracted: database.sha1
 inflated: database.sql
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56936845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档