23 votes

ClassNotFoundException DispatcherServlet lors du lancement de Tomcat (les dépendances Maven n'est copié sur wtpwebapps)

J'ai rencontré ce problème plusieurs fois et seulement juste tombé sur une (semi-) solution fiable, donc pensé que je pourrais le poster ici au cas où ça aide quelqu'un d'autre, ou dans le cas où je ne l'oublie, et aussi pour demander si quelqu'un a une idée de ce que la cause sous-jacente est, et pourquoi mon fix.

Le problème - j'ai un printemps 3 webapp que je veux utiliser pour l'Exécution de l'option de Serveur dans Eclipse pour s'exécuter sur un serveur Tomcat 7 serveur. Avec certains projets de cette marche, tout simplement, mais certains semblent avoir le bris d'un état dans lequel toutes les fois que le serveur démarre, je reçois une classe non trouvé: org.springframework.web.servlet.DispatcherServlet.

Après quelques recherches, j'ai trouvé que le projet de dépendances maven n'a pas été copié WEB-INF/lib en ${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

J'ai essayé beaucoup de choses avant, enfin, de remarquer que le projet a eu un avertissement dans les Problèmes du panneau:

Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER 
will not be exported or published. Runtime ClassNotFoundExceptions may result.

Peut-être que je devrais l'avoir remarqué plus tôt.

De toute façon, le choix de cette et exécution de la "solution Rapide" résout le problème et je peux heureusement exécuter mon projet. La solution est de: "la Marque de l'associé raw classpath comme un publier/dépendance à l'exportation".

La difficulté est, bien que cela fonctionne, je ne sais pas ce que cela signifie. Je ne vois pas de changements notables dans mon projet, la configuration une fois que c'est fait. J'aurais bien aimé savoir ce que le véritable problème et si je peux éviter que cela se produise à nouveau. Je voudrais aussi savoir si il y a quelque chose que j'aurais pu faire moi-même (autre que l'exécution de la quick fix) qui aurait fixé, parce que je sens que j'ai essayé à peu près tout le reste.

Merci pour votre aide.

32voto

Jetez un oeil sur "le Déploiement de l'Assemblée" en vertu de la section propriétés du projet. Le contenu de cette page spécifier comment votre projet est d'être assemblés dans une application en cours d'exécution. En particulier, c'est l'endroit où vous pouvez contrôler les bibliothèques que vos références de projet, doivent être emballés avec elle. Sélectionnez Ajouter -> Java Build Path Entrées. Vous serez en mesure de choisir parmi votre chemin de génération des entrées à inclure dans l'assemblée.

La solution rapide à qui vous avez trouvé fait la même chose pour vous. Si vous êtes curieux de savoir ce qui se passe sous les couvertures, jetez un oeil à votre .classpath fichier avant et après la correction rapide. La correction rapide des balises classpath avec certains assemblée de l'information.

1voto

Il semble, vous avez en outre installer Maven, Intégration de la VPplugin. Sa description peut être trouvé à issues.sonatype.org.

1voto

Muskan Points 11

De vérifier .fichier de classe et de remplacer l'entrée suivante

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" />**

avec ci-Dessous:-

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
  <attributes>
    <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
  </attributes>
</classpathentry>**

Il a travaillé pour moi.

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