为什么java会抱怨有大量条目的jar文件?

时间:2013-08-26 09:37:28

标签: java scala jar zip java-7

我偶然发现了以下问题 - 当我创建包含超过65,000个条目的.jar文件时,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。为什么会这样?有办法解决吗?

1 个答案:

答案 0 :(得分:14)

  

为什么会这样?

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

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

  

有没有办法解决它?

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


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