web-dev-qa-db-fra.com

java.util.Zip.ZipError: en-tête CEN non valide (mauvaise signature)

J'utilise Java 1.7.0_40 sur Red Hat Linux et j'ai le code suivant:

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

La variable filename pointe vers un fichier Zip de 788 Mo. La taille non compressée du fichier Zip est de 8,3 Go. Lorsque j'exécute le code ci-dessus, j'obtiens l'exception suivante:

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)

J'avais l'impression que Java 7 était capable de gérer de gros fichiers Zip. Quelqu'un peut-il expliquer pourquoi cela se produit?

Merci.

14
Justin Kredible

Moi aussi, j'ai fait face au problème dans un projet basé sur Maven. Le problème s'est produit en raison de pots corrompus. Supprimé les bocaux du dossier .m2 et reconstruit le projet; et cela a fonctionné comme un charme.

13
Puneet Pandey

Ce problème se produit car le fichier jar a été téléchargé est corrompu.

si vous utilisez Maven.

  • Pour résoudre ce problème, supprimez un fichier Jar particulier dans le dossier C: /Users/public/.m2/repository.
  • Après cela, ajoutez la nouvelle version de Maven dans POM.xml.
  • Reconstruisez et essayez. Cela fonctionnera bien.
10
Thangadurai

Il y a deux explications possibles:

5
Stephen C

Le support des fichiers volumineux (4 Go +) pour les archives Zip (c'est-à-dire le support Zip 64 bits) a été résolu par le problème JDK-4681995 ( "Ajouter un support pour les grands fichiers (> 4 Go) Fichiers Zip/jar ").

Cependant, cette modification n'était pas incluse dans Java 7 jusqu'à 1.7.0 build 55, qui était quelques builds après la version spécifique (1.7.0 build 40) que vous utilisiez. Mise à jour pour construire 55 ou plus tard résoudrait le problème.

0
vallismortis