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 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, j'obtiens:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.lang.ClassNotFoundException. Je suis presque sûr que c'est une erreur de chemin de construction. 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'
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. J'apprécierais n'importe quel conseil. Merci.
Je voulais apporter une réponse non mavenish à ce fil.
Pour des raisons de contrôle de version et de structure de répertoires stricte, je n'ai pas pu suivre la réponse d'Acheron (la meilleure réponse) de faire quelque chose de similaire à la suppression
src/
et l'ajoutsrc/main/java
etsrc/test/java
au chemin de construction.En fait, je luttais régulièrement contre ce problème de chemin de construction imbriqué 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 construction, vous devez éditer votre
Inclusion and Exclusion Patterns
en cliquant surExcluded: (None)
puisEdit...
:Là, vous pouvez ajouter en
main/webapp/WEB-INF/classes
tant que fichierExclusion Pattern
. Ensuite, il devrait vous permettre d'ajoutermain/webapp/WEB-INF/classes
au chemin de construction en tant que dossier source distinct.la source
Essaye ça:
Depuis l'onglet bibliothèques:
Supprimez vos bibliothèques d'applications Web:
Ajoutez-les à nouveau dans:
Mettre en évidence "Bibliothèques d'applications Web":
la source
J'ai eu le même problème et la bonne réponse 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 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 de corriger l'erreur.la source
Dans mon cas, j'ai un projet de nature gradle dans eclipse , le problème était dans un
build.gradle
, où celasourceSets
est spécifié:Cela semble fonctionne bien avec IntelliJ , semble cependant que l' éclipse ne le fait pas comme nid
src
,src/java
,src/resources
. Dans eclipse, je dois le changer en:la source
Voici une solution simple:
la source
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 l'avis de votre professeur - en fait, il fait la promotion de la structure source standard de maven pour ./src/main/java et ./src/main/webapp. Le second devrait tenir par exemple. le fichier WEB-INF / web.xml obligatoire mais vous n'y mettrez 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 standards et de choisir le nom "./target" pour cela. Tous les fichiers construits iront ici et l'empaquetage aboutira à un artefact déployable correct. Si vous migrez vers l'utilisation de maven plus tard, cela vous aidera également à le faire de manière scriptée et répétable.
J'espère que cela résout votre problème.
la source
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:
Vous devriez pouvoir ajouter le fichier src / main / java. Il l'ajoute également automatiquement à l'assembly de déploiement.
Attention: si vous avez ajouté un src / test / java, notez qu'il l'ajoute également à l'assembly de déploiement. Généralement, vous n'en avez pas besoin. Vous pouvez le supprimer.
la source
Cela a commencé à m'emporter dans un énorme trou de lapin de correction de problèmes avec Eclipse, mais je viens de supprimer le projet d'Eclipse et de le réimporter pour le corriger.
la source
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 plus dans le dossier source Java.
la source
Cela dépend du dossier auquel on dit «Utiliser comme dossier source». Dans la structure sur l'image si on le dit dans le dossier "cible" ou "généré", il obtient l'erreur "imbriquée". Mais sur le dossier "cxf", qui est le dernier, mentionné dans la section 'plugin' de pom.xml et d'où commence la structure du paquet (comme indiqué sur le fichier .wsdl), c'est-à-dire - le bon dossier pour le faire un 'source' , alors il n'y a pas d'erreur
la source
Vous avez un problème similaire. A fait les étapes suivantes, problème résolu:
la source
Créez deux dossiers:
final/src/
pour stocker le code java source etfinal/WebRoot/
.Vous ne pouvez pas associer la source et la racine Web. Je pense que vous pouvez mal comprendre votre professeur.
la source