Le déploiement du projet Maven lance java.util.zip.ZipException: en-tête Loc invalide (mauvaise signature)
Je reçois l'exception ci-dessous quand j'exécute mon mvn install
. J'ai même supprimé le référentiel local et couru à nouveau obtenir la même exception.
[Erreur] Échec de l'exécution du but org.Apache.maven.plugins: Maven-shade-plugin: 2.1: ombre (par défaut) sur Project cores-batch: erreur lors de la création de jar ombré: en-tête Loc invalide (mauvaise signature) -> [Aide 1]
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>commons-logging:commons-logging:jar:*</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- workaround for a spring issues -->
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<!-- don't want to pick up any other log4j.xml -->
<exclude>log4j.xml</exclude>
</excludes>
</filter>
</filters>
<!-- May be needed to work around another issue in Spring -->
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Erreur:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project cores-batch: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: invalid LOC header (bad signature)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:528)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:189)
at org.codehaus.plexus.util.IOUtil.copy(IOUtil.java:175)
at org.apache.maven.plugins.shade.DefaultShader.addResource(DefaultShader.java:427)
at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:186)
at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458)
... 21 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
15 réponses
Vous devez vérifier quel pot donne le problème. Il doit être corrompu. Supprimez ce pot et exécutez à nouveau la commande mvn spring-boot:run
. Peut-être plus qu'un pot a corrompu donc chaque fois que vous devez exécuter cette commande pour supprimer ce pot. Dans mon cas mysql, jackson, aspect jars a été corrompu mvn spring-boot:run
commande 3 fois et je comprends cela et supprimé les jars du dossier .m2
. Maintenant le problème est résolu.
Le fichier jar peut être corrompu. Essayez de supprimer le contenu du dossier suivant:
C:\Users\[username]\.m2\repository
Ensuite, faites un clic droit sur votre projet, sélectionnez Maven, mettre à jour le projet, vérifiez la mise à jour forcée des instantanés/versions.
Le problème principal sont des pots corrompus.
Pour trouver le corrompu, vous devez ajouter un point D'arrêt Java Exception dans la vue points D'arrêt D'Eclipse, ou votre IDE préféré, sélectionnez la classe java.util.zip.ZipException
et redémarrez l'instance Tomcat.
Lorsque la JVM se suspend au point d'arrêt ZipException
, vous devez aller à
JarFile.getManifestFromReference()
dans la trace de la pile, et vérifiez l'attribut name
pour voir le nom de fichier.
Après cela, vous devez supprimer le fichier du système de fichiers, puis cliquez-droit sur votre projet, sélectionnez Maven, mettre à jour le projet, vérifier la mise à jour de force des instantanés / versions.
À partir de gsitgithub / find-currrupt-jars.txt , la commande suivante répertorie tous les fichiers JAR corrompus dans le référentiel:
find /home/me/.m2/repository/ -name "*jar" | xargs -L 1 zip -T | grep error | grep invalid
Vous pouvez supprimer les fichiers JAR corrompus et recompiler le projet.
Exemple de sortie:
warning [/cygdrive/J/repo/net/java/dev/jna/jna/4.1.0/jna-4.1.0.jar]: 98304 extra bytes at beginning or within zipfile
(attempting to process anyway)
file #1: bad zipfile offset (local header sig): 98304
(attempting to re-compensate)
zip error: Zip file invalid, could not spawn unzip, or wrong unzip (original files unmodified)
J'aimerais donner mon entraînement.
Utilisez votre IDE préféré, prenez eclipse pour par exemple ici:
- Trouver un emplacement approprié dans la pile d'exceptions
- Définir le point d'arrêt conditionnel
- déboguez-le
- il imprimera le pot corrompu avant l'exception
La solution pour moi était d'exécuter mvn
avec -X
:
$ mvn package -X
Ensuite, regardez en arrière à travers la sortie jusqu'à ce que vous voyiez l'échec, puis continuez jusqu'à ce que vous voyiez le dernier fichier jar que mvn a essayé de traiter:
...
... <<output ommitted>>
...
[DEBUG] Processing JAR /Users/snowch/.m2/repository/org/eclipse/jetty/jetty-server/9.2.15.v20160210/jetty-server-9.2.15.v20160210.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.607 s
[INFO] Finished at: 2017-10-04T14:30:13+01:00
[INFO] Final Memory: 23M/370M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.1.0:shade (default) on project kafka-connect-on-cloud-foundry: Error creating shaded jar: invalid LOC header (bad signature) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.1.0:shade (default) on project kafka-connect-on-cloud-foundry: Error creating shaded jar: invalid LOC header (bad signature)
Regardez le dernier pot avant qu'il n'échoue et supprimez-le du référentiel local, c'est-à-dire
$ rm -rf /Users/snowch/.m2/repository/org/eclipse/jetty/jetty-server/9.2.15.v20160210/
Ressemble à un problème de configuration pour le compilateur Maven dans votre fichier pom. La version par défaut java source et cible est 1.5, même JDK utilisé a une version supérieure.
Pour corriger, ajoutez la section de configuration du plugin du compilateur Maven avec une version java supérieure, exemple:
<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>
Pour plus d'informations, consultez ces liens:
Je faisais face à ce problème whiel dpeloying mon oreille à mon instance weblogic locale. Effacer le référentiel local et construire l'ear à nouveau résolu le problème pour moi.
La plupart du temps, cela se produit à cause des Zars corrompus mise à jour de l'url du référentiel central Maven dans pom.fichier xml résolu mon problème vous pouvez utiliser cette url https://repo.maven.apache.org/maven2/ mais avant que de supprimer les fichiers en .répertoire m2 j'espère que cela aide
Construisez le projet avec l'option "- e-X " pour trouver le pot corrompu et supprimer le pot du référentiel local.
Cela peut être dû à plusieurs raisons:
1: Essayez de changer votre site Web.Version XML
2: Le Pot que vous essayez d'utiliser peut-être endommagé. Par exemple: utilisez une Version différente pour le pot de Maven
Au-delà de la suppression .m2 / repository, supprimez l'application du serveur, exécutez le serveur (sans applications), arrêtez-le et ajoutez à nouveau l'application. Maintenant, il est censé fonctionner. Pour une raison quelconque, le nettoyage des dossiers du serveur à partir de l'interface n'a pas le même effet.
Il est principalement causé par maven.Si vous utilisez IDEA, essayez-les étapes suivantes:
1.utilisez IDEA pour exécuter "Maven clean", alors vous verrez
[INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for com.hisen:BookSystem_V0:war:1.0-SNAPSHOT [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 116, column 15 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
Remplacer le mauvais pot
2.utilisez IDEA pour exécuter "Maven compile", alors vous verrez
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
错误: 读取/Users/qinkai/.m2/repository/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.jar时出错; invalid LOC header (bad signature)
错误: 读取/Users/qinkai/.m2/repository/ch/qos/logback/logback-core/1.1.1/logback-core-1.1.1.jar时出错; invalid LOC header (bad signature)
2 个错误
Résoudre le mauvais pot
Alors le problème sera résolu.
Cette réponse n'est pas pour les gars DevOps/ system admin, mais pour ceux qui utilisent IDE comme eclipse et font face à un problème invalid LOC header (bad signature)
.
Vous pouvez forcer la mise à jour des dépendances maven, comme suit:
"Gestionnaire LOC non valide (mauvaise signature)"
Cela est probablement dû à des pots corrompus qui ont été téléchargés par Maven. Solution rapide, je recommande de sauvegarder le .m2 / dépôt répertoire et SUPPRESSION .m2 / dépôt dans le répertoire, puis effectuez une rebuild ou Maven-Update.