java.util.zip.ZipException: erreur dans l'ouverture de fichier zip
J'ai un fichier Jar qui contient d'autres imbriqués les Pots. Quand j'invoque le nouveau JarFile()
constructeur sur ce fichier, j'obtiens une exception qui dit:
java.util.zip.ZipException: erreur dans l'ouverture de fichier zip
Quand j'manuellement décompressez le contenu de ce fichier Jar et zip il de nouveau, il fonctionne très bien.
Je ne vois que cette exception sur WebSphere 6.1.0.7 et les versions supérieures. La même chose fonctionne bien sur tomcat et WebLogic.
Lorsque j'utilise JarInputStream au lieu de Jarfiles, je suis capable de lire le contenu du fichier Jar, sans aucune exception.
- Merci pour l'astuce sur rezipping le fichier -- qui fixe pour moi.
- J'ai eu ce problème sur Mac lorsque Windows et Linux, a très bien fonctionné. À l'aide de JarInputStream résolu le problème pour moi.
- J'ai rencontré le même problème sur Tomcat Start UP [catalina.propriétés]:
org.apache.catalina.startup.TldConfig tldScanJar
AVERTISSEMENT: Échec du processus de JAR [jar:../opensaml.jar!/] pour l'extension des fichiersZipException
pour résoudre ce problème, ajoutez opensaml.~.jar dans le dossier lib de l'Application. - Semble être OS dependend. Avec Java 8 un de mes pots est lisible à partir de MacOS et Linux, mais pas avec Windows 7. Le pot est d'environ 80 Mo. Anciens pots sont lisibles très bien sur le même Windows 7. Où il y aurait de meilleures options de débogage pour cela.
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre fichier jar n'est pas endommagé. S'il est endommagé ou n'est pas capable de décompresser, cette erreur se produit.
J'ai connu le même problème. J'ai eu une archive zip qui java.util.zip.ZipFile n'a pas été en mesure de gérer mais WinRar déballé juste fine. J'ai trouvé article sur la SDN a propos de la compression et de la décompression d'options en Java. J'ai légèrement modifié l'un des exemple les codes pour produire de la méthode qui a enfin capable de gérer les archives. Astuce consiste à utiliser ZipInputStream au lieu de ZipFile et dans la lecture séquentielle d'archive zip. Cette méthode est aussi capable de gérer vide archive zip. Je crois que vous pouvez adapter la méthode en fonction de vos besoins comme tous les colliers de classes d'équivalence sous-classes pour .archives jar.
zis.close(); fis.close();
devrait être dans une clause finally - duh (ou l'utilisation d'essayer avec des ressources)Il pourrait être lié à log4j.
Avez-vous des log4j.jar fichier dans le chemin de classe java websphere (tel que défini dans le fichier de démarrage) ainsi que l'application classpath ?
Si vous assurez-vous que la log4j.jar le fichier est dans le chemin de classe java et qu'il n'est PAS dans le web-inf/lib de votre webapp.
Il peut également être liée avec la ant version (peut-être pas votre cas, mais je ne le mets ici pour référence):
Sur une note de côté, avez-vous envisager d'avoir des pots séparés ?
Vous pourriez dans le manifeste du pot, reportez-vous à l'autre des bocaux avec cet attribut:
Ensuite, placez tous vos bocaux dans le même dossier.
Encore une fois, peut ne pas être valide pour votre cas, mais toujours là pour référence.
J'ai vu cette exception avant quand quelle que soit la JVM considère être un temp répertoire n'est pas accessible en raison de ne pas avoir été là, de ne pas avoir l'autorisation d'écrire.
J'ai résolu ce problème en désactivant le jboss-x.y.z/serveur[config]/tmp et jboss-x.y.z/serveur/[config]/travail répertoires.
J'ai fait face à cette question en raison de Corrompu ZIP Fils
Vérifier si Votre POT fichier a été téléchargé Complètement
Je vois aussi ce message d'erreur quand je suis hors de l'espace disque sur le système de fichiers, il est écrit à. Vous pouvez donc lui donner plus d'espace, de nettoyer les fichiers journaux, etc.
Je l'ai vu avec un fichier Zip avec Java 6, mais il a disparu lorsque j'ai la mise à niveau vers Java 8 (n'a pas de test Java 7), il semble donc que les versions plus récentes de ZipFile dans le support de Java plus des algorithmes de compression, et ainsi il peut lire des fichiers qui ne sont pas avec les versions antérieures.
Liquibase a été l'obtention de cette erreur pour moi. J'ai résolu après que j'ai débogué et regardé liquibase essayer de charger les bibliothèques et trouvé que c'était erroring sur les fichiers manifest pour commons-codec-1.6.jar. Essentiellement, il y a corrompu le fichier zip quelque part sur votre chemin ou il y a une version incompatible utilisé. Quand j'ai fait une découverte sur le repository Maven pour cette bibliothèque, j'ai trouvé il y avait des versions les plus récentes et ajout de la version la plus récente de la pom.xml. J'ai été en mesure de procéder à ce point.
Peut-être que le fichier zip est endommagé, ou est brokened lors du téléchargement.
J'ai été faire exception
lors de la décompression d'une archive Java. L'archive elle-même ne semble pas corrompu comme 7zip (et d'autres) l'a ouvert sans problèmes ou des plaintes concernant les invalides de la CRC.
Je suis passé à Apache Commons Compresser pour la lecture de l'zip-entrées et que le problème est résolu.
Simplement pour surmonter les ZipException de l', j'ai utilisé un wrapper pour
commons-compress
1.14 appeléjarchivelib
écrit par thrau qui le rend facile à extraire ou de les compresser à partir de et vers les objets de Fichier.Exemple:
Maven dependency « Vous pouvez télécharger les bocaux de la Sonatype Repository Maven à org/rauschig/jarchivelib/.
@voir
Sur Windows7, j'ai eu ce problème sur une Samba connexion réseau pour un Java8 Fichier Jar >80 Mo de gros. Copier le fichier sur un lecteur local fixe le problème.
Dans mon cas , mon
-Dloader.path="lib"
contient d'autres pots qui n'a pas besoin.par exemple,
mvn dependency:copy-dependencies
listes de 100 fichiers jar.mais monlib
répertoire contient 101 fichiers jar.