У меня есть встроенный JAR-файл и я хочу извлечь из него один файл.
Однако, когда я запускаю следующую команду для извлечения одного файла из банки:
jar -xf test.jar example.txt
Я получаю следующую ошибку:
java.util.zip.ZipException: invalid CEN header (bad signature)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.zip.ZipFile.<init>(ZipFile.java:88)
at sun.tools.jar.Main.extract(Main.java:875)
at sun.tools.jar.Main.run(Main.java:236)
at sun.tools.jar.Main.main(Main.java:1149)
Другие страницы в StackOverflowс этим упоминанием ошибки jar может быть поврежден, но если я попытаюсь извлечь каждый файл:
jar -xf test.jar
Эта команда выполняется успешно без ошибок и извлекает каждый файл, поэтому яне уверен, что банка действительно повреждена.
ОБНОВЛЕНИЕ - в качестве обходного пути я могу успешно извлечь файл с помощью:
unzip test.jar example.txt
Однако, если я попытаюсь отредактировать текстовый файл и повторно добавить егок банке с:
zip test.jar example.txt
я получаю следующую ошибку:
zip warning: expected 43976 entries but found 109512
zip error: Zip file structure invalid (test.jar)
Еще более странно, что я могу успешно добавить отредактированный текстовый файл в банку с:
jar -uf test.jar example.txt