Подтвердить что ты не робот

Почему java жалуется на файлы jar с большим количеством записей?

Я наткнулся на следующую проблему: когда я создаю файл .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 было ограничение файлов на 65 тыс. файлов, но Java 7 по умолчанию уже должен использовать ZIP64. Почему это происходит? Есть ли способ исправить это?

4b9b3361

Ответ 1

Почему это происходит?

Это ошибка в Java 1.7.0 (иначе Java 7)

Исправлено в Java 1.7.0 p40 или новее, видимо.

Есть ли способ исправить это?

Согласно отчету об ошибке, обходным путем (для Java 1.7.0) является запуск приложения без использования опции -jar.


FWIW, есть также ошибка в обработке javac файлов JAR в формате ZIP64: