Erreurs D'Imbrication Du Chemin De Construction Eclipse

Je travaille sur une simple webapp 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 dynamique 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 j'exécute l'application, mon fichier de bienvenue s'affiche correctement, mais lorsque j'essaie d'accéder à mes servlets, je reçois:

 Http 500 SEVERE: Allocate exception for servlet InitDb

Java.lang.ClassNotFoundException. Je suis sûr que c'est une construction erreur de chemin d'accès. 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'

entrez la description de l'image ici

J'ai ceci dans mon assembly de déploiement:

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

Lorsque j'exclus main / l'avertissement disparaît, mais cela ne résout pas le problème. Je vous serais reconnaissant de tout conseil. Grâce.

103
demandé sur Mike 2012-05-31 21:08:24

10 réponses

J'ai eu le même problème même lorsque j'ai créé un nouveau projet. Je créais le projet Java dans Eclipse, puis je le mavenize, puis je vais dans les propriétés du chemin de construction java en supprimant src/ et en ajoutant src/main/java et src/test/java. Lorsque je lance Maven update, il donnait une erreur de chemin imbriqué.
Puis j'ai finalement réalisé-parce que je n'avais pas vu cette entrée avant-il y a une ligne <sourceDirectory>src</sourceDirectory> dans le fichier pom écrit Quand je l'ai mavenize. Il a été résolu après l'avoir retiré.

265
répondu acheron55 2013-03-14 13:49:19

Je voulais lancer une réponse non-mavenish à ce fil.

Pour des raisons de contrôle de version et de structure de répertoire stricte, Je n'ai pas pu suivre la réponse D'Acheron (la meilleure réponse) de faire quelque chose de similaire à supprimer src/ et ajouter src/main/java et src/test/java au chemin de construction.

J'avais en fait été off-and-on luttant contre ce problème de chemin de construction imbriqué pendant quelques semaines. La réponse au problème est suggérée dans l'erreur message:

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

Fixer

Dans votre build path, vous devez modifier votre Inclusion and Exclusion Patterns en cliquant sur Excluded: (None), puis Edit...:

  1. allez dans le navigateur et appuyez sur le clic droit sur le projet
  2. Chemin De Construction
  3. Configurer Le Chemin De Construction
  4. Source (onglet)

L'Exclusion Des Modèles

Là, vous pouvez ajouter main/webapp/WEB-INF/classes comme Exclusion Pattern. Ensuite, il devrait vous permettre d'ajouter main/webapp/WEB-INF/classes au chemin de construction en tant que dossier source séparé.

15
répondu heez 2018-04-13 22:33:22

, Essayez ceci:

Dans 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"

Mise En Surbrillance De "Bibliothèques D'Applications Web":

Mise En Évidence Des " Bibliothèques D'Applications Web"

10
répondu Sireesh Yarlagadda 2016-02-01 21:15:25

Vous devez séparer vos sources et votre répertoire cible où va la sortie de construction. 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 de source standard Maven ./src/main/java et ./src/main/webapp. Le second devrait tenir par exemple. le web obligatoire-INF / web.fichier xml mais vous ne mettrez jamais de classes réelles là-bas.

Ce que vous devez changer est votre répertoire cible. Je suggère d'aller avec les mêmes normes et de choisir le nom"./target" pour cela. Tous les fichiers construits iront ici et l'emballage qui résultera un artefact déployable correct. Si vous migrez vers Maven plus tard, cela vous aidera également à le faire de manière scriptée et reproductible.

J'espère que cela éclaircit votre problème.

2
répondu Kristof Jozsa 2012-05-31 17:42:48

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 à Build Path->Configure Build Path et sous l'onglet source j'ai supprimé toutes les sources (qui n'avaient qu'une seule source) et les ai reconfigurées à partir de là. J'ai fini par supprimer le projet d'eclipse et importer à nouveau le projet maven afin d'effacer l'erreur.

2
répondu Hatem Jaber 2017-04-04 15:06:45

La solution acceptée n'a pas fonctionné pour moi mais j'ai fait quelques recherches sur les paramètres du projet.

La solution suivante l'a corrigé pour moi au moins si vous utilisez un projet web dynamique:

  1. Faites un clic droit sur le projet puis les propriétés. (ou alt-entrée sur le projet)
  2. sous assemblage de déploiement, supprimer "src".

Vous devriez pouvoir ajouter le src / main / java. Il l'ajoute également automatiquement à L'assemblage de déploiement.

Mise en garde: Si vous avez ajouté un src / test / java notez qu'il l'ajoute également à L'assemblage de déploiement. Généralement, vous n'avez pas besoin de cela. Vous pouvez le supprimer.

1
répondu Chad 2017-10-05 07:24:03

Dans mon cas, j'ai un gradle la nature du projet à eclipse, le problème était dans un build.gradle, où ce sourceSets est spécifié:

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

Cela semble fonctionne bien avec intelliJ,semble toutefois que eclipse n'aime pas le nid src, src/java, src/resources. Dans eclipse je dois le modifier:

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
}
1
répondu albciff 2018-03-08 15:52:19

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

0
répondu Sasha O 2012-06-01 01:48:10

Cela a commencé à me prendre dans un énorme trou de lapin de corriger les problèmes avec Eclipse, mais je viens de supprimer le projet D'Eclipse et de le réimporter pour le réparer.

0
répondu Carson 2018-07-25 14:50:34

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

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

-3
répondu Jimmy Zhang 2015-10-28 15:52:25