Je reçois l'exception ci-dessous lorsque je lance mon mvn install
. J'ai même supprimé le référentiel local et ai couru à nouveau avec la même exception.
[ERREUR] Impossible d'exécuter l'objectif org.Apache.maven.plugins: maven-shade-plugin: 2.1: shade (défaut) sur le projet core-batch: Erreur lors de la création du fichier jar ombré: en-tête LOC invalide (signature incorrecte) -> [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
Vous devez vérifier quel bocal pose problème. Il doit être corrompu. Supprimez ce fichier et exécutez à nouveau la commande mvn spring-boot:run
. Peut-être plus d'un fichier JAR a-t-il été corrompu, vous devez donc exécuter cette commande à chaque fois pour supprimer ce fichier JAR. Dans mon cas, mysql, jackson, les fichiers d’aspect étaient corrompus 3 fois la commande mvn spring-boot:run
et j’en ai déduit que j’ai supprimé les fichiers jar du dossier .m2
. Maintenant, le problème est résolu.
Le fichier JAR est peut-être corrompu. Essayez de supprimer le contenu du dossier suivant:
C:\Users\[username]\.m2\repository
Cliquez ensuite avec le bouton droit de la souris sur votre projet, sélectionnez Maven, Mettre à jour le projet, puis cochez Forcer la mise à jour des instantanés/des versions.
Le principal problème sont les pots endommagés.
Pour rechercher le fichier endommagé, vous devez ajouter un point d'arrêt d'exception Java dans la vue Points d'arrêt d'Eclipse ou votre environnement de développement préféré, sélectionnez la classe Java.util.Zip.ZipException
et redémarrez l'instance de Tomcat.
Lorsque la machine virtuelle Java est suspendue à ZipException
point d'arrêt, vous devez accéder à JarFile.getManifestFromReference()
dans le suivi de la pile et vérifier l'attribut name
pour voir le nom du fichier.
Après cela, vous devez supprimer le fichier du système de fichiers, puis cliquer avec le bouton droit de la souris sur votre projet, sélectionner Maven, Mettre à jour le projet, puis vérifier l’option Force Update of Snapshots/Releases.
De gsitgithub/find-currupt-jars.txt , la commande suivante répertorie tous les fichiers jar corrompus du 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)
La solution pour moi était de lancer mvn
avec -X
:
$ mvn package -X
Ensuite, regardez en arrière dans la sortie jusqu'à voir 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)
Examinez le dernier fichier jar avant sa défaillance et supprimez-le du référentiel local, c.-à-d.
$ rm -rf /Users/snowch/.m2/repository/org/Eclipse/jetty/jetty-server/9.2.15.v20160210/
Cela 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 le JDK utilisé a une version plus récente.
Pour résoudre ce problème, ajoutez la section de configuration du plug-in maven compiler avec la 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:
Nous pouvons forcer la validation de la somme de contrôle dans maven avec au moins deux options:
1.Ajouter le --strict-checksums
à notre commande maven.
2.Ajoutez la configuration suivante à notre fichier de paramètres maven:
<settings xmlns="http://maven.Apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/SETTINGS/1.0.0
https://maven.Apache.org/xsd/settings-1.0.0.xsd">
<!--...-->
<profiles>
<profile>
<!--...-->
<repositories>
<repository>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>
<!--...-->
</url>
</repository>
</repositories>
<pluginRepositories>
<!--...-->
</pluginRepositories>
<!--...-->
</profile>
</profiles>
<!--...-->
</settings>
Plus de détails dans cet article: https://dzone.com/articles/maven-artifact-checksums-what
Au-delà de la suppression de .m2/repository, supprimez l'application du serveur, exécutez le serveur (sans applications), arrêtez-le et ajoutez à nouveau l'application. Maintenant, c'est censé fonctionner. Pour une raison quelconque, le simple fait de nettoyer les dossiers du serveur de l'interface n'a pas le même effet.
Cela est principalement dû à maven.Si vous utilisez IDEA, suivez ces étapes:
1. Utilisez IDEA pour exécuter "maven clean", vous verrez alors
[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", vous verrez alors
[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.
la plupart du temps, cela se produit car les zars corrompus mettant à jour l'URL du référentiel central maven dans le fichier pom.xml ont résolu mon problème. Vous pouvez utiliser cette URL https://repo.maven.Apache.org/maven2/ = mais avant cela, supprimez les fichiers du répertoire .m2, espérons que cela vous aidera
"Gestionnaire de LOC invalide (signature incorrecte)"
Cela est probablement dû à la corruption des fichiers JAR téléchargés par Maven. Solution rapide, je recommande de sauvegarder le répertoire . M2/repository et supprimer . m2/repository , puis effectuez une reconstruction ou une mise à jour Maven.
Construisez le projet avec l'option "-e -X" pour trouver le fichier jar corrompu et retirez le fichier jar du référentiel local.
Je faisais face à ce problème en déployant mon oreille sur mon instance locale weblogic. Effacer le référentiel local et reconstruire l'oreille a résolu le problème pour moi.
Voici un petit détecteur écrit en Java, il suffit de copier et d'exécuter :)
import Java.io.IOException;
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;
import Java.util.ArrayList;
import Java.util.List;
import Java.util.jar.JarFile;
import Java.util.stream.Collectors;
public class JarValidator {
public static void main(String[] args) throws IOException {
Path repositoryPath = Paths.get("C:\\Users\\goxr3plus\\.m2");
// Check if the main Repository Exists
if (Files.exists(repositoryPath)) {
// Create a class instance
JarValidator jv = new JarValidator();
List<String> jarReport = new ArrayList<>();
jarReport.add("Repository to process: " + repositoryPath.toString());
// Get all the directory files
List<Path> jarFiles = jv.getFiles(repositoryPath, ".jar");
jarReport.add("Number of jars to process: " + jarFiles.size());
jarReport.addAll(jv.openJars(jarFiles, true));
// Print the report
jarReport.stream().forEach(System.out::println);
} else {
System.out.println("Repository path " + repositoryPath + " does not exist.");
}
}
/**
* Get all the files from the given directory matching the specified extension
*
* @param filePath Absolute File Path
* @param fileExtension File extension
* @return A list of all the files contained in the directory
* @throws IOException
*/
private List<Path> getFiles(Path filePath, String fileExtension) throws IOException {
return Files.walk(filePath).filter(p -> p.toString().endsWith(fileExtension)).collect(Collectors.toList());
}
/**
* Try to open all the jar files
*
* @param jarFiles
* @return A List of Messages for Corrupted Jars
*/
private List<String> openJars(List<Path> jarFiles, boolean showOkayJars) {
int[] badJars = { 0 };
List<String> messages = new ArrayList<>();
// For Each Jar
jarFiles.forEach(path -> {
try (JarFile file = new JarFile(path.toFile())) {
if (showOkayJars)
messages.add("OK : " + path.toString());
} catch (IOException ex) {
messages.add(path.toAbsolutePath() + " threw exception: " + ex.toString());
badJars[0]++;
}
});
messages.add("Total bad jars = " + badJars[0]);
return messages;
}
}
Sortie
Repository to process: C:\Users\goxr3plus\.m2
Number of jars to process: 4920
C:\Users\goxr3plus\.m2\repository\bouncycastle\isoparser-1.1.18.jar threw exception: Java.util.Zip.ZipException: Zip END header not found
Total bad jars = 1
BUILD SUCCESSFUL (total time: 2 seconds)
Cela peut être dû à plusieurs raisons:
1: Essayez de changer votre version de Web.XML
2: Le pot que vous essayez d'utiliser peut être corrompu. Par exemple: utilisez une version différente pour le pot de Maven