web-dev-qa-db-fra.com

erreur de ressort pendant la construction

Je dois créer un petit site Web en utilisant spring. donc j'ai choisi spring template project puis new spring mvc project tout ce que j'essaie il y a une erreur qui s'est produite

Errors occurred during the build.
Errors running builder 'Maven Project Builder' on project 'mTime'.Errors occurred during the build.
Errors running builder 'Maven Project Builder' on project 'mTime'.
Could not calculate build plan: Failed to parse plugin descriptor for org.Apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\Apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Failed to parse plugin descriptor for org.Apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\Apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Could not calculate build plan: Failed to parse plugin descriptor for org.Apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\Apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)
Failed to parse plugin descriptor for org.Apache.maven.plugins:maven-war-plugin:2.1.1 (C:\Users\User01\.m2\repository\org\Apache\maven\plugins\maven-war-plugin\2.1.1\maven-war-plugin-2.1.1.jar): invalid LOC header (bad signature)

je sais que maven est inclus dans spring framework, et lorsque je vérifie le répertoire, les bocaux sont là. 

Comment puis-je résoudre cette erreur?

21
Swift Sharp

La partie pertinente du message d'erreur est la suivante:

invalid LOC header (bad signature)

ce qui suggère qu'un fichier binaire est cassé, probablement l'une des dépendances. Si vous avez une connexion Internet rapide, supprimez tout votre référentiel Maven et laissez-le retélécharger toutes les dépendances:

rm -rf ~/.m2/repository/*

Voir également

52
Tomasz Nurkiewicz

D'après mon expérience, invalid LOC header (bad signature) est probablement dû au fait que le fichier .jar téléchargé est corrompu.

Si votre connexion Internet est lente, au lieu de supprimer tout le référentiel Maven, vous pouvez essayer de supprimer le dossier contenant le fichier jar problématique en fonction des indications du message d'erreur (i.e C:\Users\User01\.m2\repository\org\Apache\maven\plugins\maven-war-plugin\2.1.1\). Utilisez ensuite mvn clean install -U pour télécharger à nouveau les dépendances.

26
Ken Chan

pour moi, exécuter le script suivant plusieurs fois a fonctionné. Il recherche les lignes d'en-tête CEN et LOC Apparaissent dans le résultat mvn et demande la suppression des fichiers jar un par un. Après quelques suppressions et rediffusions, les choses devraient fonctionner à nouveau. Je n'ai pas osé automatiser complètement.

#!/bin/sh
# fix issues like:
#[ERROR] error: error reading /Users/wf/.m2/repository/org/docx4j/xhtmlrenderer/1.0.0/xhtmlrenderer-1.0.0.jar; invalid LOC header (bad signature)
# WF 2013-10-27
mvnlog=/tmp/mvnlog$$
mvnproblem=/tmp/mvnproblem$$
mvn install | tee $mvnlog
grep "invalid ... header" $mvnlog > $mvnproblem
for culprit in `cat $mvnproblem | cut -d" " -f5  | cut -d ";" -f1`
do
  echo "fix mvn LOC header issue with $culprit? yes/no/abort"
    read answer
    case $answer in
      y*|Y*) rm $culprit;;
        n*|N*) ;;
        *) exit 1;
    esac
done
rm -f $mvnproblem
rm -f $mvnlog
3
Wolfgang Fahl

Il jette parce que votre .jar est invalide ou corrompu.

Suis les étapes:

Remarque: le dossier .m2 est masqué par défaut. Décochez le dossier.

Étape 1: Supprimez tout le contenu du dossier .m2/repository.

Étape 2: Redémarrez votre Eclipse.

Étape 3: Maven-> Mettre à jour le projet .Checked- Force la mise à jour des instantanés/des versions.

Étape 4: Exécuter en tant que Maven Clean.

Étape 5: Exécuter en tant qu'installation Maven.

Étape 6: Projet propre.

Étape 7: Exécutez votre projet.

J'espère que vous trouverez votre solution ici ..

Merci..

3
Ketul patel

ajouter une sortie de débogage lors de l'exécution de maven. Il va vous montrer quel pot est cassé. Supprimer uniquement celui-là.

2
Rian

Une autre solution pour trouver le coupable lorsque vous obtenez cette erreur en démarrant Tomcat sous Windows ou lorsque vous ne pouvez pas exécuter le script de Wolfgang consiste à remplacer JarResourceSet.class dans catalina.jar par une version avec débogage supplémentaire.

C'est-à-dire google pour le code source de votre version de Tomcat et adapter la méthode initInternal (): 

    String processingJar = "";

    try (JarFile jarFile = new JarFile(getBase())) {
        processingJar = jarFile.getName();

        ...
    } catch (IOException ioe) {
        System.out.println("Failed with " + processingJar);
        throw new IllegalArgumentException(ioe);
    }

Pour construire, votre chemin de classe doit pointer vers votre répertoire Tomcat lib, par exemple:

javac -cp C:\Apache-Tomcat-X.Y.Z\lib\* JarResourceSet.Java

Ensuite, utilisez 7Zip ou un programme similaire pour l'insérer dans catalina.jar dans le répertoire approprié et exécutez Tomcat. J'ai été étonné que cela a fonctionné la première fois mais cela a fonctionné. (Ensuite, vous devez simplement trouver où se trouve le fichier JAR incriminé dans votre référentiel .m2, puis supprimer et reconstruire, etc.)

1
BenHT

Si vous ne souhaitez pas supprimer complètement votre référentiel Maven local, utilisez ce qui suit pour rechercher les artefacts endommagés et les supprimer:

public static void main(String[] args) throws IOException {
    findBrokenZip(Paths.get(System.getProperty("user.home") + "/.m2/repository"));
}

static void findBrokenZip(Path path) throws IOException {
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
        for (Path entry : stream) {
            if (Files.isDirectory(entry)) {
                findBrokenZip(entry);
            } else {
                if (entry.getFileName().toString().endsWith(".jar")) {
                    try (JarFile zipFile = new JarFile(entry.toFile())) {
                        zipFile.getManifest();
                    } catch (ZipException e) {
                        Files.delete(entry);
                    }
                }
            }
        }
    }
}
1
egore911

Essaye ça :

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
0
Karthik CP
Help -> Install New Softwares

À partir de là, installez le kit avec les développements Web, XML, CSS, Java EE ... Après cela, si le problème persiste, utilisez la commande

rm -rf ~/.m2/repository/*
0
Jithin U. Ahmed