java - 为什么 java 提示 jar 文件有很多条目?

标签 java scala jar zip java-7

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

最佳答案

Why is this happening?

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

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

Is there a way to fix it?

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


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

关于java - 为什么 java 提示 jar 文件有很多条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18441076/

相关文章:

Java jar 在运行时找不到类

java - 报警管理器: repeating alarm not always fires

scala - 如何强制 sbt 一次获取所需的一切?

java - 如何解决缺少包访问说明符的问题?

JavaFX:IntelliJ IDEA Artifacts 抛出 NullPointerException

scala - 从Oozie中安排的Spark Scala向Hbase写入时出现问题

Java字符串获取空格后的字符

java - 无法从 Scala 加载 Spark 中的 Java 资源

Java - For 循环中的 2-Do-While 循环

scala - 用scala中的Future替换while循环