13

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

$ # 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

我听说旧.zip文件格式有 65k 个文件的限制,但 Java 7 应该已经默认使用 ZIP64。为什么会这样?有没有办法解决它?

4

1 回答 1

14

为什么会这样?

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

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

有没有办法解决它?

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


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

于 2013-08-26T09:54:38.910 回答