Java.util.zip.ZipError: неверный заголовок CEN (плохая подпись)

Я использую Java 1.7.0_40 в Red Hat Linux, и у меня есть следующий код:

Path zipfile = Paths.get(filename);
FileSystem fs = FileSystems.newFileSystem(zipfile, FileTest.class.getClassLoader());

Переменная filename указывает на zip файл, размер которого составляет 788 МБ. Несжатый размер zip файла составляет 8,3 ГБ. Когда я запускаю код выше, я получаю следующее исключение:

Exception in thread "main" java.util.zip.ZipError: invalid CEN header (bad signature)
        at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
        at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1058)
        at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
        at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
        at java.nio.file.FileSystems.newFileSystem(FileSystems.java:386)
        at FileTest.readFromZip(FileTest.java:35)
        at FileTest.main(FileTest.java:25)

У меня создалось впечатление, что Java 7 способен обрабатывать большие zip файлы. Может ли кто-нибудь объяснить, почему это происходит?

Спасибо.

Ответ 1

Я тоже столкнулся с проблемой в проекте Maven. Проблема возникла из-за испорченных банок. Удалил банки из папки .m2 и снова построил проект; и он работал как прелесть.

Ответ 2

Эта проблема возникает из-за повреждения файла jar.

, если вы используете Maven.

  • Для решения этой проблемы удалите конкретный файл Jar в папке C:/Users/public/.m2/repository.
  • После этого добавьте новую версию Maven в POM.xml.
  • Перестройте и попробуйте. Он будет работать нормально.

Ответ 3

Есть два возможных объяснения:

Ответ 4

Я получил ту же ошибку при попытке развернуть через пользовательский интерфейс Tomcat - Manager. Но когда я запускал приложение из Spring STS, оно работало просто отлично. Поэтому я воспользовался предложением Puneet Pandey выше, удалил папку .m2, перестроил проект, а затем развернул его с помощью Tomcat-> manager, и на этот раз он запустился без ошибок. Спасибо Пунит Пандей.

Ответ 5

Поддержка больших файлов (4GB+) для zip-архивов (т.е. поддержка 64-битных zip) была решена с помощью проблемы JDK-4681995 ("Добавить поддержку больших (> 4 ГБ) файлов zip/jar").

Однако это изменение не было включено в Java 7 до версии 1.7.0 build 55, которая представляла собой несколько сборок после конкретной версии (1.7.0 build 40), которую вы использовали. Обновление до сборки 55 или более поздней решит проблему.

Ответ 6

Это проблема конфигурации для maven-компилятора в вашем файле pom. Версия java исходной версии и целевой версии версии 1.5, даже используемая JDK имеет более высокую версию.

Чтобы исправить, добавьте раздел конфигурации плагина maven для компилятора с более высокой версией java, например:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.6.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

Для получения дополнительной информации проверьте эти ссылки:

maven compiler

отчет об ошибке