Erreurs d’imbrication du chemin de génération Eclipse

Je travaille sur une simple application Web JSP / Servlet / Tomcat pour ma classe. Le professeur nous a demandé d’utiliser une structure de dossiers légèrement différente de la structure de projet Web dynamic par défaut. Plutôt que d’utiliser le dossier webcontent, il veut tout notre code source sous src / main / java et src / main / webapp.

Lorsque je lance l’application, mon fichier de bienvenue s’affiche correctement, mais lorsque j’essaie d’accéder à mes servlets, j’obtiens:

Http 500 SEVERE: Allocate exception for servlet InitDb 

java.lang.ClassNotFoundException. Je suis sûr que c’est une erreur de chemin de compilation. J’ai final / src sur le chemin de construction mais je reçois l’avertissement

 "Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src' 

entrer la description de l'image ici

J’ai ceci dans mon assemblage de déploiement:

  

Lorsque j’exclue le principal / l’avertissement disparaît, mais il ne résout pas le problème. J’apprécierais n’importe quel conseil. Merci.

J’ai eu le même problème même lorsque j’ai créé un nouveau projet. J’étais en train de créer le projet Java dans Eclipse, puis de le rendre plus simple, puis d’aller dans les propriétés du chemin de compilation java en supprimant src/ et en ajoutant src/main/java et src/test/java . Lorsque j’exécute la mise à jour de Maven, elle permet de générer une erreur de chemin nestede.
Puis, j’ai finalement réalisé – car je n’avais pas vu cette entrée auparavant – qu’il y a une ligne src dans le fichier pom que je rédige. Il a été résolu après l’avoir enlevé.

Je voulais jeter une réponse non-mélancolique à ce sujet.

Pour des raisons de contrôle de version et de structure de répertoire ssortingcte, je n’ai pas pu suivre la réponse d’Acheron (la meilleure réponse) à la suppression de src/ et à l’ajout de src/main/java et src/test/java .

J’étais en train de lutter contre ce problème de construction nestede depuis quelques semaines. La réponse au problème est suggérée dans le message d’erreur:

To enable the nesting exclude 'main/' from 'final/src'

Réparer

Dans votre chemin de génération, vous devez modifier vos Inclusion and Exclusion Patterns en cliquant sur Excluded: (None) , puis sur Edit... :

  1. Allez dans le navigateur et cliquez avec le bouton droit sur le projet
  2. Chemin de construction
  3. Configurer le chemin de construction
  4. Source (onglet)

Modèles d'exclusion

Vous pouvez y append main/webapp/WEB-INF/classes tant que Exclusion Pattern . Ensuite, il devrait vous permettre d’append main/webapp/WEB-INF/classes au chemin de compilation en tant que dossier source distinct.

Essaye ça:

Depuis l’onglet Bibliothèques:

 Eclipse -> right click on project name in sidebar -> configure build path -> Libraries 

Supprimez vos bibliothèques d’applications Web:

 click on "Web App Libraries" -> click "remove" 

Ajoutez-les dans:

 click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish" 

Soulignant “Bibliothèques Web App”:

Mise en évidence des

Vous devez séparer vos sources et votre répertoire cible à la sortie de la génération. Il est également important de noter qu’aucun fichier de classe ne peut jamais se retrouver dans le répertoire source. Ce n’est pas contre le conseil de votre professeur – en fait, il fait la promotion de la structure source standard maven pour ./src/main/java et ./src/main/webapp. Le second devrait tenir par exemple. le fichier obligatoire WEB-INF / web.xml mais vous n’y placerez jamais de classes réelles.

Ce que vous devez changer, c’est votre répertoire cible. Je suggère d’aller avec les mêmes normes et en choisissant le nom “./target” pour cela. Tous les fichiers construits entreront ici et leur conditionnement entraînera un artefact déployable correct. Si vous migrez pour utiliser maven plus tard, cela vous aidera également à le faire de manière répétable et scriptée.

J’espère que cela clarifie votre problème.

J’ai eu le même problème et la réponse correcte ci-dessus n’a pas fonctionné pour moi. Ce que j’ai fait pour le résoudre était d’aller dans Build Path->Configure Build Path et sous l’onglet source j’ai supprimé toutes les sources (qui ne Build Path->Configure Build Path qu’une seule source) et les reconfiguré à partir de là. J’ai fini par supprimer le projet d’eclipse et importer à nouveau le projet maven afin d’éliminer l’erreur.

La solution acceptée ne fonctionnait pas pour moi, mais j’ai fait quelques recherches sur les parameters du projet.

La solution suivante a résolu le problème pour moi au moins SI vous utilisez un projet Web dynamic:

  1. Cliquez avec le bouton droit sur le projet, puis sur les propriétés. (ou alt-enter sur le projet)
  2. Sous Assemblée de déploiement, supprimez “src”.

Vous devriez pouvoir append le src / main / java. Il l’ajoute également automatiquement à l’Assemblée de déploiement.

Avertissement: Si vous avez ajouté une note src / test / java, il l’ajoute également à Deployment Assembly. En général, vous n’en avez pas besoin. Vous pouvez le supprimer.

Dans mon cas, j’ai un projet nature gradué dans eclipse , le problème était dans un build.gradle , où cet ensemble de sourceSets est spécifié:

 sourceSets { main { java { srcDir 'src' } } } 

Cela semble bien fonctionner avec intelliJ , mais apparemment, eclipse n’aime pas nest src , src/java , src/resources . En éclipse, je dois le changer pour:

 sourceSets { main { java { srcDir 'src/main/java' } } } 

Pour que le compilateur Eclipse fonctionne correctement, vous devez supprimer final / src du chemin source et append final / src / main / java à la place. Cela peut également résoudre votre problème car le répertoire de compilation ne se trouve plus dans le dossier source Java.

Cela a commencé à me plonger dans un énorme trou de lapin de fixer des problèmes avec Eclipse, mais j’ai juste supprimé le projet d’Eclipse et l’ai réimporté pour le réparer.

Créez deux dossiers: final/src/ pour stocker le code java source et final/WebRoot/ .

Vous ne pouvez pas mettre la source et la racine Web ensemble. Je pense que vous pouvez mal comprendre votre professeur.