142 votes

Erreurs d'imbrication des chemins de construction d'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 par défaut des projets web dynamiques. Plutôt que d'utiliser le dossier webcontent, il veut que tout notre code source soit placé 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 presque sûr qu'il s'agit d'une erreur de chemin de construction. J'ai final/src sur le chemin de construction mais je reçois l'avertissement suivant

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

enter image description here

Je l'ai dans mon assemblée de déploiement :

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

Lorsque j'exclus main/, l'avertissement disparaît, mais le problème n'est pas résolu. J'apprécierais tout conseil. Je vous remercie.

3voto

albciff Points 2658

Dans mon cas, j'ai un projet gradle nature dans éclipse Le problème se situe au niveau d'un build.gradle où cette sourceSets est spécifié :

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

Cela semble bien fonctionner avec intelliJ Cependant, il semble que éclipse n'aime pas le nid src , src/java , src/resources . En éclipse Je dois le remplacer par :

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

2voto

Kristof Jozsa Points 738

Vous devez séparer vos sources et votre répertoire cible dans lequel la sortie de la compilation se fait. Il est également important de noter qu'aucun fichier de classe ne doit se retrouver dans le répertoire source. Ce n'est pas contre l'avis de votre professeur - en fait il promeut la structure de source standard de maven qui va pour ./src/main/java et ./src/main/webapp. Le second devrait contenir par exemple le fichier obligatoire WEB-INF/web.xml mais vous n'y mettrez jamais de classes réelles.

Ce que vous devez changer, c'est votre répertoire cible. Je suggère de suivre les mêmes normes et de choisir le nom "./target" pour cela. Tous les fichiers construits iront dans ce répertoire et l'empaqueter donnera un artefact déployable correct. Si vous migrez vers l'utilisation de maven plus tard, cela vous aidera également à faire ceci d'une manière scriptée et répétable.

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

2voto

Chad Points 451

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 m'a permis de résoudre le problème, du moins SI vous utilisez un projet Web dynamique :

  1. Cliquez avec le bouton droit de la souris sur le projet, puis sur Propriétés. (ou alt-enter sur le projet)
  2. Sous Deployment Assembly, supprimez "src".

Vous devriez pouvoir ajouter le fichier src/main/java. Il l'ajoute également automatiquement à l'Assembly Deployment.

Attention : si vous avez ajouté un src/test/java, notez qu'il l'ajoute également à Deployment Assembly. En général, vous n'en avez pas besoin. Vous pouvez le supprimer.

1voto

Carson Points 395

J'ai commencé à m'enfoncer dans un énorme trou de lapin pour résoudre des problèmes avec Eclipse, mais j'ai simplement supprimé le projet d'Eclipse et je l'ai réimporté pour résoudre le problème.

1voto

Way Points 11

J'ai eu le même problème. J'ai suivi les étapes suivantes et le problème a été résolu :

  1. Supprimer le projet dans eclipse.
  2. Supprimer le fichier .Project et le fichier . Settings.
  3. Importer le projet comme un projet maven existant dans eclipse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X