web-dev-qa-db-fra.com

Dépendances Maven manquantes dans le projet Eclipse

Nous avons un projet mis en place avec maven pour résoudre les dépendances. Cela fonctionne généralement bien, mais maintenant je tente de le compiler et de l’exécuter sur un nouveau PC et j’ai un problème avec les dépendances manquantes dans Eclipse.

Ce qui est amusant, c’est que si j’exécute "mvn package" dans la console ou dans Eclipse, cela fonctionne bien et produit même war contenant tous les fichiers jar nécessaires. Seul Eclipse se plaint de "Le projet n'a pas été construit car son chemin de construction est incomplet. Impossible de trouver le fichier de classe pour org.slf4j.Logger ...". Si je compare le projet avec un autre ordinateur (où le projet fonctionne bien), je remarque qu’il manque de nombreuses bibliothèques sous la liste "Dépendances Maven" dans Eclipse. Même s’ils sont dans la guerre emballée et qu’ils se trouvent également dans le dossier référentiel.

Donc, les jar-s sont là, mais Eclipse ne les listera pas tous sous "Dépendances Maven". Que puis-je faire?

L'ordinateur fonctionne sous Windows 7 avec Java 64 bits et Eclipse.

90
hostnik

Problème résolu!

Je ne sais pas ce qui a exactement résolu le problème, mais j'ai fait 4 choses dans Eclipse:

  • Fenêtre-> Préférences: Maven-> Installations: Paramètres généraux -> fichier ouvert et dépôt local codé en dur
  • Projet-> Nettoyer
  • clic droit sur le projet: Maven-> Mettre à jour les dépendances
  • clic droit sur le projet: Maven-> Mettre à jour la configuration du projet

Je suppose que c’étaient les dépendances de la mise à jour puisqu’à la fin des deux premières années, il n’y avait aucun changement.

79
hostnik

Eh bien, j'ai tout essayé ici, malheureusement rien ne fonctionne dans mon cas. Donc, en essayant différentes combinaisons, je suis sorti avec celui-ci qui a résolu mon problème.

1) Ouvrez le fichier .classpath situé à la racine du projet Eclipse.

2) Insérer l'entrée suivante dans le fichier:

<classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.Eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Ensuite, reconstruisez votre projet dans Eclipse (Projet-> Clean-Build) . Vous pouvez maintenant vérifier dans le chemin de construction Java de votre projet dans l'onglet Bibliothèques les dépendances Maven incluses: enter image description here

88
Ualter Jr.

Eclipse, qui n’est pas au courant de mes débuts, rencontre un problème similaire dans lequel Eclipse ne reconnaît tout simplement pas une instruction d’importation, même si tous les signes laissent penser que la dépendance a été téléchargée avec succès.

Vous devriez vérifier que votre fichier de dépendance a bien été téléchargé en allant sur la ligne de commande et en tapant

mvn dependency:tree

Si vous voyez votre paquet là-bas, alors qu'Eclipse ne le reconnaît pas, ce qui fonctionne (parfois) pour moi est d'aller au terminal, d'aller dans le dossier du projet et de taper

mvn Eclipse:clean puis mvn Eclipse:eclipse

Enfin rafraîchir le projet dans Eclipse

Je ne sais pas pourquoi ça marche, et parfois ça ne marche pas une fois, puis ça marche encore ... ça vaut le coup d'essayer!

26
rogueleaderr

Mon projet était juste foiré. Voici comment je l'ai corrigé pour Eclipse Indigo x64 (J2EE 3.7.3):

  1. Supprimé mon fichier POM (sauvegardé bien sûr).
  2. Menu contextuel du projet > Maven > Désactiver Maven Nature .
  3. Supprimé le projet (mais pas le contenu sur le disque).
  4. Réimporté en tant que Importation > Général > Projet existant .
  5. Menu contextuel du projet > Configurer > Convertir en projet Maven ... .
  6. Acceptez les valeurs par défaut de l’assistant Maven.
  7. Écraser POM avec votre POM sauvegardé. (Vous avez maintenant le dossier Maven Dependencies ).
  8. Maven Update/Clean pour faire bonne mesure.

J'espère que ça aide quelqu'un. :)

26
Joseph Lust

J'ai eu ce problème pour les dépendances créées dans d'autres projets. Les dépendances de tiers téléchargées se sont bien comportées dans le chemin de génération, mais pas dans la bibliothèque que j'avais créée.

SOLUTION: Dans le projet qui ne construit pas correctement,

  • Cliquez avec le bouton droit sur le projet et choisissez Propriétés, puis Maven. 

  • Décochez la case " Résoudre les dépendances dans Workspace Projects "

  • Appuyez sur Appliquer, puis sur OK.

  • Cliquez à nouveau avec le bouton droit sur votre projet et effectuez un Maven-> Mettre à jour les instantanés (Ou Mettre à jour les dépendances)

Et vos erreurs devraient disparaître lorsque votre projet sera reconstruit (automatiquement si vous avez activé la génération automatique).

24
IceBox13

Juste au cas où quelqu'un aurait essayé toutes les autres options et que vous soyez toujours bloqué, essayez de cliquer avec le bouton droit de la souris sur le dossier du projet, de passer à l'option Maven et de cliquer sur le bouton "Ajouter une dépendance". Pour une raison quelconque, Eclipse ne met pas à jour les dépendances manuellement à partir du répertoire pom.xml à la première tentative.

screen shot of menu selection

7
FrankDupree

Eh bien, j'ai tout essayé ici, malheureusement rien ne fonctionne dans mon cas. Donc, en essayant différentes combinaisons, je suis sorti avec celui-ci qui a résolu mon problème.

1) Ouvrez le fichier .classpath situé à la racine du projet Eclipse.

2) Insérer l'entrée suivante dans le fichier:

<classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.Eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Ensuite, reconstruisez votre projet dans Eclipse (Projet-> Clean-Build).

6
Ualter Jr.

Pour les étapes suivantes ont fonctionné dans mon cas:

1 Sur Eclipse, cliquez avec le bouton droit de la souris sur le projet souhaité Maven -> Désactiver Maven Nature  

2 Cliquez à nouveau avec le bouton droit de la souris, puis sélectionnez Propriétés . Supprimez toutes les preuves de dépendance externe Maven en ne laissant que la bibliothèque système JRE.

3 Cliquez à nouveau avec le bouton droit de la souris sur le projet, puis sélectionnez Configurer -> Convertir en projet Maven

4
Rafael Isquierdo

J'avais un problème similaire. Je l'ai résolu en exécutant la commande Maven-> Update Project Configuration action

4
Darryl Sibeon

Pour moi, le problème était que maven ne trouvait pas le fichier settings.xml qui se trouve dans myMavenFolder\conf .

Ce que j'ai fait pour résoudre le problème a été de sélectionner le bon emplacement du fichier settings.xml à partir d'Eclipse:
Fenêtre -> Préférences -> Maven -> Paramètres utilisateur

Enfin, cliquez sur Appliquer et mettre à jour votre projet.

4
I. YOCK

J'ai donc environ 4 ou 5 ans de retard par rapport à ce parti, mais j'ai eu ce problème après avoir tiré de notre rapport, et aucune des autres solutions de ce fil n'a fonctionné dans mon cas pour éliminer ces avertissements/erreurs.

Cela a fonctionné pour moi:

Depuis Eclipse, allez dans Fenêtre -> Préférences -> Maven (développez) -> Erreurs/Avertissements. La dernière option indique "Exécution de plug-in non couverte par la configuration du cycle de vie" - utilisez le menu déroulant pour cette option et basculez "Ignorer", puis Appliquer, puis OK. (À l'invite "Nécessite la mise à jour des projets Maven", cliquez sur OK).

Plus d'infos:  

Cela peut ne pas nécessairement "résoudre" le (s) problème (s) sous-jacent, et peut ne pas être qualifié de "meilleure pratique" par certains, cependant, il devrait supprimer/supprimer ces avertissements d'apparaître dans Eclipse et vous permettre au moins d'aller de l'avant. Plus précisément, je travaillais avec Eclipse Luna Service Release 1 (4.4.1) avec Spring Dashboard et Spring IDE Core (3.6.3) et m2e (1.5) installés fonctionnant sous Arch Linux et OpenJDK 1.7. J'ai importé mon projet en tant que projet maven existant et sélectionné OK lorsque prévenu des erreurs/avertissements existants (pour y remédier ultérieurement).

Suppress/Remove "Plugin Execution not covered..." warnings Eclipse-Maven

(Désolé, je ne suis pas un designer, mais j'ai ajouté une photo pour plus de clarté.)

4
Brandon K

Voici les étapes que j'ai suivies. 
1. Projet maven supprimé d'Eclipse.
2. Supprimez tous les fichiers (.setting/.classpath/target) autres que src et pom de mon dossier source.
3. importé à nouveau en tant que projet maven
4. le reconstruire, vous devriez pouvoir voir les dépendances maven.

3
karuna nidhan

Aucune des solutions ci-dessus n'a fonctionné pour moi, alors cette réponse s'adresse à quiconque dans ma situation. J'ai finalement trouvé le problème moi-même et une solution différente. Le fichier pom.xml contenait une balise dependencyManagement qui englobait les dépendances et M2Eclipse n'ajouterait pas le dossier Maven Dependencies lorsqu'il était présent. J'ai donc supprimé cette étiquette, puis exécuté la solution proposée par Ualter Jr. et Eclipse a immédiatement ajouté le dossier manquant!

3
Paul Crease

Ma réponse est similaire à celle de @JerylCook: trouvez un autre fichier .classpath dans un projet Maven actif, modifiez vos mauvais fichiers comme bons. La clé est d'ajouter 

<attributes>
    <attribute name="maven.pomderived" value="true"/>
</attributes>

dans chaque <classpathentry> de type con et src. N'oubliez pas de changer <classpathentry .... /> en <classpathentry ...>xxx</classpathentry>.

Enfin, mettez à jour le projet maven et réinstallez/reconstruisez-le dans maven.

1
WesternGun

Dépendances Maven: Qu'est-ce qui a résolu le problème dans Eclipse? J'ai ajouté la dépendance dans le fichier "pom". J'ai fait une construction, mais je ne pouvais pas voir la dépendance Maven dans Eclipse . Étape suivante: Fermer le projet . Puis rouvrir le projet . Je pouvais voir les dépendances Maven. 

1
mvn Eclipse:clean

puis de Eclipse: "Maven Update Project" fait l'affaire!

1
Ebuzer Taha KANAT

Je pourrais résoudre l'erreur par 1) Clic droit (votre projet maven) -> maven -> maven install

Après une installation réussie

2) Faites un clic droit (votre projet maven) -> maven -> mettre à jour le projet. Et toute l'erreur de maven a été résolue! 

1
Nandan Bhalwankar

Ce même problème m’est arrivé, et c’est parce qu’il ya eu une erreur lors du téléchargement d’un fichier jar en raison de problèmes de mise en pension, indiquée par un drapeau rouge dans le pom.xml

J'ai ajouté un autre référentiel afin que le drapeau rouge dans le pom.xml disparaisse et qu'Eclipse charge à nouveau le pom, résout son problème et répertorie les dépendances maven dans l'Explorateur de projets. Cela semble simple et évident de résoudre des problèmes visibles, mais comme Eclipse était assez heureux de lancer Maven et de le construire avec succès, il n’était pas évident que les problèmes de drapeau rouge et de pension étaient à l’origine de sa réticence à analyser le pom et à lister le maven les dépendances

1
bigbadmouse

mettre à jour le .classpath ci-dessous fonctionnera à chaque fois.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/Java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/Java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
    <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.Eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
1
Jeryl Cook

J'ai eu un problème similaire et j'ai essayé toutes les réponses dans ce post. Pour résoudre ce problème, j’ai été proche de la nécessité de combiner les solutions Joseph Lust et Paul Crease. J'ai ajouté le fichier sauvegardé pom.xml après avoir supprimé et réimporté le projet. Rien ne s'est affiché jusqu'à ce que je supprime la balise de gestion des dépendances dans pom.xml et, comme par hasard, le dossier des dépendances s'y trouvait.

Cependant, il a divisé les POM enfants car ils avaient besoin de la gestion de la dépendance pom.xml parent pour fonctionner. Mon MVN ne fonctionnait donc pas correctement sur le projet, ni depuis Eclipse, ni depuis la ligne de commande, ce qui provoquait une erreur cassée pom.xml.

La dernière solution, si tout échoue, consiste à importer manuellement les fichiers .jar requis par votre projet. Cliquez avec le bouton droit de la souris sur Propriétés du projet -> Chemin de construction Java -> Bibliothèques et ajouter un fichier JAR externe.

Si votre MVN fonctionne correctement à partir de la ligne de commande et que vous avez construit le projet avec succès, vous disposerez de tous les dépôts nécessaires dans votre dossier .m2/repository. Ajoutez tous les fichiers jar externes mentionnés dans votre balise dependencies de pom.xml et vous verrez une section de bibliothèque référencée dans votre Eclipse, avec toutes les erreurs rouges gênantes disparues.

Ce n'est pas la solution optimale, mais cela vous permettra de travailler dans Eclipse sans erreurs de dépendances manquantes et de construire le projet Maven à partir d'Eclipse et de la ligne de commande.

1
Saad

Voici comment je l'ai résolu

  • Window-> Preferences: Maven-> User Settings (Cliquez sur "open file" dans la fenêtre résultante ou modifiez simplement settings.xml avec un éditeur de texte externe comme Notepad) correct. J'ai eu une faute de frappe dans mon dossier. 
  • Une fois que vous avez corrigé settings.xml, cliquez sur Mettre à jour les paramètres, qui se trouve dans le même écran Préférences-> Maven-> Paramètres utilisateur.

Reconstruisez maintenant et les derniers fichiers JAR seront installés à l'emplacement correct.

1
guyland123

Pour moi, il suffisait d'ajouter un buildCommand (org.Eclipse.m2e.core.maven2Builder) et une nature (org.Eclipse.m2e.core.maven2Nature) dans le fichier .project, comme ceci:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>iText</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.Eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.Eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.Eclipse.jdt.core.javanature</nature>
        <nature>org.Eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

et j'avaisenter image description here

1
Frizz1977

Mon problème semble similaire, alors je vais ajouter à la discussion. J'avais annulé l'importation d'un projet Maven existant dans Eclipse, ce qui l'empêchait de mettre à jour Update et ne finissait pas correctement le bâtiment Work Space.

Ce que je devais faire pour résoudre le problème était de sélectionner Run As... -> Maven build... et sous Objectifs, je saisis dependency:go-offline et l’exécutais.

Puis j'ai cliqué avec le bouton droit sur le projet et sélectionné Maven -> Update Project... et mis à jour ce projet spécifique. 

Cela lui a finalement permis de créer les dossiers source et de terminer l'importation.

1
Welsh

Si vous rencontrez des erreurs "chemins imbriqués" après l'exécution de Maven -> Mise à jour de la configuration du projet (ou dans Juno, il s'agit de "Mise à jour de la configuration ..."), votre chemin de construction est mal configuré.

Cliquez avec le bouton droit sur le projet -> Chemin de construction -> Configurer le chemin de construction

Assurez-vous que seuls '/ src' et les répertoires de ce niveau sont inclus. Si vous avez par exemple '/ src' et aussi '/ src/main/resources' sont présents, ceci est incorrect. La seconde ressource ('/ src/main/resources') est "imbriquée" dans la première ('/ src'), ce qui vous empêche d'impossifier l'importation de ressources, car elle empêche Eclipse de voir les dépendances maven.

1
KomodoDave

Pour les étapes suivantes ont fonctionné dans mon cas:

1 Sur Eclipse, cliquez avec le bouton droit sur le projet souhaité. Maven -> Désactiver Maven Nature.

2 Cliquez à nouveau avec le bouton droit de la souris, puis sélectionnez Propriétés. Supprimez toutes les preuves de dépendance externe Maven en ne laissant que la bibliothèque système JRE.

3 Cliquez à nouveau avec le bouton droit sur le projet, puis sélectionnez Configuration -> Convertir en projet Maven.

cela a fonctionné pour moi aussi

0
anurag1007

J'ai aussi rencontré ce problème. Cela m'a dérouté plusieurs heures. J'ai essayé beaucoup de solutions suggérées dans ce sujet. Enfin, j'ai découvert que c'était dû aux filtres Java Element. 

Java Element Filters.

0
Kevin He

Tout ce qui précède n'a pas fonctionné avec moi . Le correctif consistait uniquement à supprimer le dossier du référentiel sous .m2, puis à effectuer une mise à jour maven à partir d'Eclipse.

0
Khalid Abdlqader

Dans Eclipse STS, si "Maven Dependencies" disparaît, vous devez vérifier et corriger votre pom.xml. Je l'ai fait (deux fois) et je l'ai résolu. Ce n'était pas un problème de dépendances mais une chaîne générée et déplacée dans une position aléatoire dans mon pom.xml.

0
LucianoDemuru

fenêtre -> préférences -> Maven -> Instalations -> Paramètres globaux C:\Program Files (x86)\Apache-maven- (version)\conf\settings.xml

dépendance mvn: arbre Dépendance mvn: résoudre

une fois qu'il pointe vers le fichier de paramètres approprié, cliquez avec le bouton droit de la souris sur le projet: dépendances de mise à jour, mettez à jour la configuration du projet, une fois qu'il n'est pas chargé ou le code conserve toujours des erreurs, fermez/ouvrez le projet

0
Tiago Medici

le projet entier avait l'air bizarre dans Eclipse, le dossier des dépendances maven était manquant, il montrait que certains types étaient inconnus, mais j'ai pu le construire avec succès dans maven. Ce qui a résolu mon problème, c’était d’ajouter le dossier gen au chemin source sur le chemin de génération du projet. 

Cela ressemble probablement à ceci Android/FBReaderJ/gen existe déjà, mais n’est pas un dossier source. Convertir dans un dossier source ou le renommer

0
mik80

La solution ci-dessous a fonctionné pour moi -
1- Aller au répertoire du projet
2- lancez mvn Eclipse: eclipse (Hope mvn est ajouté dans votre chemin)
3- lancer mvn clean install

Actualisez votre projet dans Eclipse et vérifiez.

0
Basu

Tant de réponses. Vous voyez, il pourrait y avoir plusieurs raisons pour lesquelles cela ne fonctionne pas, comme prévu . Dans mon cas, je n'ai pas non plus réalisé la - balise autour de mes dépendances. facepalm

Exemple:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

cela ne DEFINIT que la dépendance de ce projet et de tous les sous-projets avec la version souhaitée! C'est ce que c'est, par exemple devrait ressembler à dans le maître-POM. Pour utiliser réellement la bibliothèque dans CE projet actuel, vous devez également ajouter la dépendance comme suit:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
</dependencies>

MAINTENANT, il fournira la bibliothèque dans CE projet en cours.

0
Robert Fornesdale

C'est tellement étonnant que ce problème ait tant de causes différentes et de solutions possibles. J'ai trouvé encore une solution différente qui a fonctionné pour moi.

Eh bien, ce n’est pas vraiment une solution, mais une découverte: je peux voir le nœud Maven Dependencies dans l’Explorateur de packages, qui est la valeur par défaut pour la perspective Java, mais je peux pas le voir dans la perspective Java EE, qui utilise l'explorateur de projet par défaut. Ces deux explorateurs semblent très similaires au premier coup d'œil, vous pouvez donc vous attendre à voir les dépendances Maven dans les deux cas.

Tandis que j'essayais de comprendre cela, je n'avais pas réalisé cette différence, donc ce n'était pas vraiment un problème pour moi finalement.

0
Danger