web-dev-qa-db-fra.com

Tomcat lève des exceptions ClassNotFound pour les classes d'autres projets Eclipse ouverts.

J'ai une structure de projet Eclipse qui ressemble à ceci:

Eclipse
    project a
    project b

Tous ces projets sont des projets Maven. Le projet B est un projet WTP Eclipse et contient le projet A en tant que dépendance. J'utilise le plugin m2Eclipse.

Lorsque je déploie le projet B sur Tomcat (le tout à partir d’Eclipse), il génère toujours des erreurs indiquant qu'il ne trouve pas les classes du projet A. La seule façon de résoudre ce problème consiste à fermer Projet A dans Eclipse et faire une commande mvn install , donc, à ce stade, le projet A est traité comme toute autre dépendance.

J'aimerais ne pas devoir continuer à rouvrir puis à fermer le Projet A chaque fois que je le modifie (ce qui est assez souvent à ce stade). 

J'ai essayé d'ajouter le projet A au chemin de construction du projet B, mais cela ne semble pas faire l'affaire. Encore une fois, cela ne fonctionne que si je ferme le projet dans Eclipse afin qu’il soit traité comme une dépendance Maven normale. 

FYI J'utilise la version Helios d'Eclipse. Le projet B étant un projet de printemps, Tomcat tombe naturellement lorsqu'il importe tous les haricots, etc.

Est-ce que quelqu'un a des suggestions? Merci beaucoup.

21
Ben J

Tomcat ne peut pas trouver vos classes parce que Tomcat ne voit pas la dépendance du projet dans Eclipse. Pour résoudre le problème, vous pouvez ajouter le dossier bin du projet a au chemin de classe Tomcat de l'application exécutée à partir du projet b.

5
rsp

Ce que vous devez faire est ceci:

  1. Dans Eclipse, sélectionnez Fenêtre> Afficher la vue> Serveurs> et ouvrez un onglet appelé Serveurs.
  2. Dans Serveurs, double-cliquez sur le serveur souhaité.
  3. Cette action devrait ouvrir une fenêtre intitulée Vue d'ensemble, avec le serveur sélectionné dans l'onglet
  4. Dans cette fenêtre, sélectionnez: Ouvrez la configuration de lancement et cliquez sur le lien.
  5. Dans la fenêtre Edit Configuration, sélectionnez l’onglet appelé Classpath.
  6. Dans la zone de texte ClassPath, sélectionnez la ligne: User Entries
  7. Maintenant, appuyez sur le bouton à droite intitulé: Ajouter des projets
  8. Dans la fenêtre Sélection de projet résultante, sélectionnez le projet externe que le serveur doit rechercher par clic.
  9. Fermez ces fenêtres en cliquant sur Appliquer puis sur OK selon vos besoins au fur et à mesure que vous travaillez la pile
  10. Redémarrez votre serveur dans la fenêtre de vue d'ensemble

Vous devriez être prêt à partir. C'est en fait seulement un exercice de 2 minutes. Bonne chance

75
Jalkin

Si vous allez dans les propriétés du projet, choisissez l'élément "Assemblage de déploiement", cliquez sur "Ajouter ..." et choisissez "Projet", vous pouvez ajouter le projet dépendant et le problème devrait être résolu.

32
Thomas

Cliquez avec le bouton droit sur le projet Web ajouté au serveur de conteneur, sélectionnez Maven, puis sélectionnez Désactiver la résolution de l'espace de travail. Ensuite, votre projet de dépendance commencera à apparaître comme un fichier jar comme toutes les autres dépendances. 

Clic droit sur le WebProject -> Maven -> Désactiver la résolution de l'espace de travail. 

5

Avez-vous installé l'extension m2Eclipse qui connaît WTP? Sans cela, M2E ne fonctionnera pas correctement pour les projets WTP. Regarde ça:

https://docs.sonatype.org/display/M2Eclipse/WTP+mini+howto

Manière simple:

Run -> Run Configurations... -> Classpath

0
Mehdi LAMRANI