我偶然發現了以下問題 - 當我創建了超過65k條目的.jar
文件時,java會抱怨「無效或損壞的jarfile」。例如:爲什麼java抱怨有很多條目的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文件的限制,在舊.zip
文件格式,但Java 7的默認情況下應使用ZIP64已經。這是爲什麼發生?有沒有辦法解決它?
一個JAR是ZIP Java的變化。雖然它可能已經解決了一些問題,但它可能落後於其他改進。我建議你不要把一些很多文件放在JAR中;) –
@PeterLawrey - 是的,在幾個較小的.jar文件之間拆分東西是顯而易見的解決方法,但它非常笨重。無論如何,文件數量的這種下限是不正常的。也許有關於這個問題已經開放的錯誤? – Rogach
我希望如此,但如果你找不到它,你總是可以登錄另一個。 –