为什么java抱怨有很多条目的jar文件?

2022-09-04 21:11:00

我偶然发现了以下问题 - 当我创建超过65k条目的文件时,java抱怨“无效或损坏的jarfile”。例:.jar

$ # in fresh dir
$ for i in {1..70000}; do touch $i; done
$ jar cf app.jar {1..70000}
$ java -jar app.jar
Error: Invalid or corrupt jarfile app.jar

但是如果我使用的文件少一点,它的工作原理是:

$ jar cf app.jar {1..60000}
$ java -jar app.jar
no main manifest attribute, in app.jar

我听说旧文件格式有65k文件限制,但Java 7应该默认使用ZIP64。为什么会发生这种情况?有没有办法解决它?.zip


答案 1

为什么会发生这种情况?

这是Java 1.7.0(又名Java 7)中的一个错误

显然,在Java 1.7.0 p40或更高版本中已修复。

有没有办法解决它?

根据错误报告,解决方法(对于Java 1.7.0)是在不使用该选项的情况下启动应用程序。-jar


FWIW,在处理ZIP64格式的JAR文件时也存在一个错误:javac


答案 2

推荐