web-dev-qa-db-fra.com

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener dans eclipse

Je suis en train de faire une simple application Spring MVC (n'utilisant pas maven) qui imprimera hello world sur un navigateur. C’est un projet dynamique dans Eclipse, j’ai donc mis tous les fichiers jar requis dans le chemin de construction ainsi que dans le dossier WEB-INF/lib

J'ai essayé deux solutions et les deux n'ont pas fonctionné.

Solutions j'ai trouvé:

  1. nettoyage du répertoire de travail Tomcat
  2. mettre le fichier jar spring-mvc/spring-web.jar dans lib

Voici mon web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

    <display-name>Spring MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

et il n'y a pas d'erreur de frappe dans la configuration de contextLoaderListener, alors quel est le problème, y at-il une autre solution

Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 8:16:39 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.11
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1676)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1521)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.Java:415)
    at org.Apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.Java:397)
    at org.Apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.Java:118)
    at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4618)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5184)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5179)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)

Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 20, 2014 8:16:40 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringSample] startup failed due to previous errors
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Jan 20, 2014 8:16:40 PM org.Apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 8:16:40 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 4010 ms

finalement je reçois une erreur 404 car mon service n'est pas chargé

11
Sudip7

J'ai eu ce même problème dans Eclipse. Lorsque je faisais une nouvelle installation maven et que je déplaçais le fichier WAR généré dans mon dossier Tomapp Webapp, cela fonctionnait sans problème. Cependant, afin de déboguer je voulais exécuter dans Eclipse, mais cela jetterait l'erreur suivante.

SEVERE: Error configuring application listener of class   org.springframework.web.context.ContextLoaderListener

J'ai cherché sur Google jusqu'à ce que j'ai trouvé le blog suivant.

http://commonexceptions.blogspot.com/2014/01/Java.html

Comme l'auteur l'explique:

Cette exception a été provoquée lorsque je n'ai pas ajouté les dépendances maven à le chemin de construction. J'utilisais Eclipse avec maven, je devais donc inclure le Dépendances maven dans le chemin de construction, comme expliqué ci-dessous.

Voir le post pour la solution. C’est un correctif de configuration simple pour Eclipse Deployment Assembly. Cela m'a pris environ 30 secondes et je peux maintenant déboguer ma webapp Spring dans Eclipse.

Voici les étapes pertinentes du post:

Ajout de dépendances Maven dans le déploiement Web du projet

  • Ouvrez les propriétés du projet (exemple: dans l'explorateur de projet, cliquez à droite sur le nom du projet .__ pour sélectionner "Propriétés"). 
  • Sélectionnez "Assemblage de déploiement".
  • Cliquez sur le bouton "Ajouter ..." dans la navigation de droite. 
  • Sélectionnez "Entrées du chemin de génération Java" dans le menu du type de directive, puis cliquez sur "Suivant".
  • Sélectionnez "Dépendances Maven" dans le menu Entrées du chemin de construction Java. 
  • cliquez sur "Terminer". 
  • À présent, les «dépendances Maven» doivent être ajoutées à l’assemblage de déploiement Web et exécutées.

Lorsque vous utilisez Eclipse WDT et utilisez un projet non modifié et ayant déjà travaillé:

  • Si Tomcat est en cours d'exécution, arrêtez-le
  • Ouvrez la vue "Serveurs": Fenêtre puis sélectionnez "Afficher la vue" puis "Autres"> Serveur> Serveurs
  • Cliquez avec le bouton droit sur le serveur Tomcat, puis sélectionnez "Nettoyer le répertoire de travail Tomcat".
  • Faites un clic droit sur le serveur Tomcat puis sélectionnez "Nettoyer"
  • Redémarrez le serveur Tomcat

La solution ci-dessus devrait résoudre l'exception.

25
AllanT

Essayez de placer le fichier spring-web.jar directement dans WEB-INF/lib (WEB-INF/lib/spring-web.jar) et non dans WEB-INF/lib/spring-mvc/spring-web.jar

2
Rida BENHAMMANE

Si vous créez un projet simple sans maven, Devez suivre les étapes suivantes,

  1. télécharger les fichiers JAR requis, par exemple J'utilise Spring 4, j'ai donc téléchargé les fichiers de Index of release

  2. Ajoutez ensuite ces fichiers dans votre dossier WebContent/WEB-INF/lib.

  3. Ajouter des fichiers jar dans le chemin de construction (Dans Eclipse: clic droit sur le projet -> Propriétés -> Chemin de construction Java -> Ajouter des JAR ...)

Cela évitera l'exception org.springframework.web.context.ContextLoaderListener.

1
atish shimpi

J'ai un très bon moyen de vous aider à apprendre Spring MVC si vous avez Maven opérationnel.

SI SO: allez sur votre ligne de commande (Cygwin) que j'utilise ...

mvn archetype: generate Il vous demandera un "numéro d'archétype". Pour vous ... tapez 16 Entrez l'ID de groupe qui n'est que le paquet principal . Entrez l'ID d'artefact qui correspond au nom de votre projet . SNAP-SHOT --- appuyez simplement sur Entrée et même avec version Package - correspond au nom de votre identifiant de groupe. EX: com.spring Confirmez-le en saisissant la lettre 'y' et appuyez sur entrée . Faites tout ce qui précède une fois que vous êtes dans votre répertoire d’espace de travail. De cette façon, il est créé là . Vous pouvez faire "mvn Eclipse: eclipse" pour le charger dans Eclipse OR, vous pouvez simplement l’importer. Je préfère l'ancienne façon d'importer un projet existant.

Tout sera "déjà" configuré pour vous en termes de configuration ALL (basée sur Java), ce qui est bon pour vous. Il contiendra déjà toutes les dépendances Maven dont vous avez besoin dans votre pom.xml. Vous pouvez en ajouter ou en retirer si vous le souhaitez.

Le point ici est que vous aurez déjà un projet en cours et que vous pourrez y jouer à partir de là. Je crée tous mes projets comme celui-ci au début, j'efface ce dont je n'ai pas besoin et j'ajoute ce que je fais, puis je pars de là.

Bonne chance!!!

1
helpfulGuest

C'est un problème de dépendance, il manque des dépendances dans l'artefact. Ma solution dans IntelliJ:

Clic droit sur le nom du projet -> Ouvrir les paramètres du module -> Problèmes -> Ajouter les dépendances manquantes à l'artefact

Redémarrez le serveur (mon cas était Tomcat)

J'espère que ça aide

1