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

290

Je les ai inclus dans le Build Path :

  • toutes les bibliothèques de printemps
  • Bibliothèque Apache Tomcat 7.0

Le projet échoue toujours au démarrage:

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:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener
    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:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    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:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

Dans org.sprintframework.web-3.1.0.M1.jar, je peux voir le org.springframework.web.context.ContextLoaderListener.

Quelqu'un sur Google dit que cela spring.jardevrait être inclus, mais je n'en vois aucune spring.jardans la distribution 3.x.

Eclipse 3.6.2
Tomcat 7

Edit: Quelqu'un sur le Spring Forum (hors ligne) a dit que "Mettre à jour automatiquement les dépendances" devrait être vérifié dans les propriétés du projet mais je ne vois rien de tel dans les propriétés du projet.

emeraldhieu
la source
1
fermez le projet, créez un nouveau lieu de travail, assurez-vous des dépendances dans POM. j'ai dû faire face à ce problème mais a été corrigé après correction dans les dépendances
MLS
Pouvez-vous publier le contenu de votre dossier .war / lib s'il vous plaît. Ou du moins tout ce qui est. * Spring. * \. Jar.
Simeon
Même si j'ai ajouté la dépendance suivante à pom, j'avais toujours la même erreur. <dependency> <groupId> org.springframework </groupId> <artifactId> spring-web </artifactId> <version> {Spring-Version} </version> </dependency> Ce que j'ai fait, comme d'autres l'ont suggéré, j'ai ajouté le maven dépendances à l'assembly de déploiement. Et lorsque je mets à jour le pom avec d'autres dépendances et que je fais maven> update project, l'erreur continue de se produire. L'inspection de l'assemblage de déploiement montre que les dépendances maven sont supprimées. J'ai dû refaire le processus ci-dessus à nouveau.
Tadele Ayelegn
1
Cette solution a fonctionné pour la plupart. Ajoutez des dépendances à l'assembly de déploiement.
lokesh

Réponses:

777

J'ai rencontré un problème similaire lors de l'exécution d'une application Web Spring dans un tomcat géré par Eclipse. J'ai résolu ce problème en ajoutant des dépendances maven dans l'assembly de déploiement Web du projet.

  1. Ouvrez les propriétés du projet (par exemple, faites un clic droit sur le nom du projet dans l'explorateur de projet et sélectionnez "Propriétés").
  2. Sélectionnez "Assemblage de déploiement".
  3. Cliquez sur le bouton "Ajouter ..." dans la marge de droite.
  4. Sélectionnez "Entrées du chemin de génération Java" dans le menu du type de directive et cliquez sur "Suivant".
  5. Sélectionnez "Maven Dependencies" dans le menu Java Build Path Entries et cliquez sur "Finish".

Vous devez voir les «dépendances Maven» ajoutées à la définition de l'assembly de déploiement Web.

Marcelo
la source
6
C'est la façon dont vous devez le faire, la bonne façon dans l'éclipse.
pap
18
J'avais le même problème. Mais je ne peux pas voir «Deployment Assembly» dans «Properties» (dans un module de mon projet multimodule maven).
gtiwari333
9
C'est correct, bien que très ennuyeux. Peut-être que quelque chose que le plugin m2e devrait prendre en charge, à mon avis.
RickB
10
Je vois des dépendances Maven ajoutées à la définition de l'assemblage de déploiement Web, mais je continue à recevoir l'erreur.
dabadaba
10
Que faire si les entrées du chemin de génération Java ne contiennent rien? Je suis dans ce cas.
vdolez
117

La même chose m'arrive de temps en temps lors de l'utilisation d'Eclipse WDT. C'est particulièrement frustrant quand cela arrive à un projet non modifié et fonctionnant auparavant. Voici ce que je fais pour le corriger dans ce dernier scénario:

  1. Arrêtez Tomcat (s'il est en cours d'exécution)
  2. Ouvrez la vue "Serveurs": Fenêtre> Afficher la vue> Autre> Serveur> Serveurs
  3. Cliquez avec le bouton droit sur Tomcat Server> Nettoyer le répertoire de travail Tomcat.
  4. Clic droit sur Tomcat Server> Nettoyer
  5. Redémarrez le serveur

Cela résout généralement le problème que vous mentionnez.

Chepech
la source
3
Il existe un rapport de bogue pour cette situation spécifique ( bugs.eclipse.org/bugs/show_bug.cgi?id=365748 ). Les développeurs d'Eclipse ont besoin de plus d'informations à ce sujet et des moyens de reproduire le problème.
Chucky
1
bon c'est la solution flexible pour tous, cette réponse doit être marquée comme réponse. Bon travail Chepech
Questions Java
3
C'est vraiment une solution la plus simple pour ce problème. Merci Chepech!
Badal
2
Cela ne m'a pas aidé à utiliser eclipse 4.4. J'ai dû utiliser la méthode de suppression / ajout du déploiement de Susie à Tomcat. Je surveillais le dossier de déploiement tomcat lors des nettoyages. Je ne sais pas pourquoi le nettoyage ne nettoie pas le dossier de déploiement.
Blessed Geek
1
L'assemblage de déploiement est la bonne façon de le faire, mais s'il ne fonctionne pas en raison d'une corruption ou autre, ce nettoyage le corrige en fait.
Calabacin
26

Vous pouvez essayer "Nettoyer le répertoire de travail Tomcat" ou simplement "Nettoyer ..". Cela est censé éliminer tout état publié et republier à partir de zéro.

Mashrur
la source
Merci pour cette solution! La réponse acceptée ci-dessus n'a pas résolu ce problème pour moi, mais la vôtre l'a fait.
GreenTurtle
25

J'ai utilisé IntelliJ IDEA, la compilation est réussie, mais au démarrage de Tomcat, il est dit:

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

Au début, je pensais que le JAR manquait, mais il était en place.

Solution:, File > Project Structure > Artifactsdans le Output Layoutdouble clic dans le panneau de droite, Available Elementsla bibliothèque nommée comme Maven:..., elle sera déplacée WEB-INF/libdans le volet gauche.

Acceptez et redémarrez Tomcat.

乌鸦 不会 飞
la source
Cette réponse n'est pas exactement pertinente pour la question posée car OP utilisait Eclipse
Adam Michalik
10
Mais ça m'a aidé.
udaybhaskar
8

C'est sûrement un problème lié à Eclipse. La chose qui a fonctionné pour moi est de créer un nouveau serveur dans l'onglet du serveur Eclipse. Exécutez ensuite votre application sur ce nouveau serveur, cela devrait fonctionner.

Aditya Gaikwad
la source
7

Si tout ce qui est mentionné ci-dessus ne fonctionne pas, essayez ce qui suit. Ça a marché pour moi.

Supprimez votre projet du serveur> Redémarrez le serveur> Ajoutez votre projet au serveur> Redémarrez le serveur.

Instruction détaillée:

1. Right click on server > Add and Remove
2. Select your project > Remove > Finish
3. Restart your server
4. Right click on server > Add and Remove
5. Select your project > Add > Finish
6. Restart your server again.
Susie
la source
5

J'étais confronté au même problème pour un projet d'éclipse configuré pour le runtime Tomcat 7

Faites un clic droit sur le projet et accédez aux propriétés du projet. Cliquez sur Assemblage de déploiement. J'ai pu remarquer que mes pots de bibliothèque de printemps que j'avais créés pendant la compilation avec une bibliothèque utilisateur manquaient. Ajoutez simplement les pots et vous ne devriez voir aucune erreur dans la console lors du démarrage de Tomcat

abhi
la source
5

Si vous utilisez maven, le projet n'est peut-être pas encore construit. Faites d'abord un, mvn clean packagepuis essayez à nouveau de redéployer.

gouki
la source
Eclipse 3.6.2 + Tomcat 7
emeraldhieu
4

Solution pour Eclipse Luna:

  1. Clic droit sur le projet web maven
  2. Cliquez sur le menu 'Propriétés'
  3. Sélectionnez 'Deployment Assembly' dans le côté gauche de la fenêtre contextuelle
  4. Cliquez sur le bouton «Ajouter ...» dans le côté droit de la fenêtre contextuelle
  5. Apparaît maintenant une nouvelle fenêtre contextuelle (Nouvelles directivités d'assemblage)
  6. Cliquez sur «Entrées du chemin de génération Java»
  7. Cliquez sur le bouton 'Suivant'
  8. Cliquez sur le bouton «Terminer», fermez maintenant automatiquement la fenêtre contextuelle New Assemby Directivies
  9. Maintenant, cliquez sur le bouton «Appliquer» et sur le bouton OK
  10. Exécutez votre application web
Radhakrishnan S
la source
4

Si vous utilisez IntelliJ IDEA et déployez une application sur Tomcat Server, il est indiqué: Sous le menu Fichier -> sélectionnez la structure du projet -> cliquez sur l'artefact -> sélectionnez vos fichiers JAR et cliquez avec le bouton droit -> mettez dans WEB \ lib -> redémarrez le serveurentrez la description de l'image ici

harun ugur
la source
3

En fait, c'est un problème de Tomcat. Accédez simplement au dossier «lib» de votre projet et copiez tous les fichiers associés à «Spring» dans celui-ci. Rafraîchissez votre projet et vous êtes tous prêts à partir. Ce problème persiste parfois car tomcat ne parvient pas à localiser les classes principales de Spring.

Rahul Sharma
la source
2

J'ai également eu la même erreur. Je n'avais pas ajouté la dépendance ci-dessous dans mon fichier POM.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.7.RELEASE</version>
  </dependency>

Mais Mon porject fonctionnait avant même d'avoir ajouté cette dépendance. Mais à un moment donné, il s'est arrêté et a commencé à donner la même erreur ci-dessus.

Si quelqu'un ne peut pas résoudre cette erreur, il peut également le résoudre par ce lien


la source
1
<dependency> <groupId> org.springframework </groupId> <artifactId> spring-web </artifactId> <version> 4.1.6.RELEASE </version> </dependency> L'ajout de cela m'a aidé à résoudre cette erreur.
Ashutosh S
2

J'ai eu le même problème. Je l'ai résolu en ajoutant une dépendance Spring-Web dans mon pom. Assurez - vous que vous utilisez pot-web ressort qui a ContextLoaderListener classe étend ContextLoader et met en œuvre ServletContextListener trouvent dans le paquetage org.springframework.web.context. J'ai utilisé la version 3.0.4.

Asif Khan
la source
1

J'ai essayé le

  • projet propre mvn
  • nettoyer
  • nettoyer le répertoire de travail tomcat automatiquement
  • mettre à jour les dépendances

La seule chose qui a fonctionné au moins temporairement était d'ajouter des dépendances Maven à la définition de l'assembly de déploiement Web

Mais cela ne marche pas pour toujours! Après quelques jours, il cesse de fonctionner. Ma solution était de supprimer les dépendances Maven, d'appliquer les modifications et d'ajouter à nouveau les dépendances Maven.

J'utilise - Eclipse Juno - Maven intégré - Tomcat 7

Volker Demel
la source
1

Pour les utilisateurs gradle, cela fonctionne avec les étapes suivantes

1) Arrêtez et supprimez le serveur Tomcat de l' onglet Serveurs dans Eclipse

onglet eclipse tomcat

2) nettoyer la webapp et le répertoire de travail de l'installation de tomcat , (référence, mode d' emploi : effacer le cache de Tomcat et résoudre les problèmes JSP obsolètes )

$ rm -r /usr/local/AT7028/work/*
$ rm -r /usr/local/AT7028/webapps/WAR_NAME

3) Nettoyer et éclipser le projet à l'aide de l'outil de construction

$ ./gradlew clean eclipse// déclenche la commande respective pour les mvnutilisateurs,$ mvn clean package

4) configurez un nouveau serveur Tomcat dans eclipse et réexécutez le projet.

Prayagupd
la source
1

Moi aussi, j'ai été confronté au même problème .... et résolu en suivant les étapes ci-dessous:

RC (clic droit sur le projet Web) -> propriétés -> Assemblage de déploiement -> Ajouter -> Entrées du chemin de génération Java -> Suivant -> sélectionner les fichiers jar manquants -> suivant -> terminer

L'application s'exécute avec succès ...

Neel
la source
J'ai l'erreur de l'OP, mais il n'y avait aucun fichier jar manquant dans mon assemblage de déploiement.
Blamkin86
1

J'ai le même problème, et je l'ai résolu en utilisant les étapes mentionnées ci-dessus.Mais non quand j'ai à nouveau ce problème et j'essaye ce qui suit,

RC (clic droit sur le projet Web) -> propriétés -> Assemblage de déploiement -> Ajouter -> Entrées du chemin de génération Java -> Suivant ->

après avoir cliqué sur suivant, il n'y a qu'une fenêtre vide avec les options Next et Fnish désactivées. Que puis-je faire maintenant?

Geo Thomas
la source
1

J'ai fait face au même problème.

Vous venez de supprimer le serveur de la configuration et de le rajouter après le redémarrage d'Eclipse en l'ajoutant à l'environnement d'exécution du serveur.

Ramashis
la source
1

Pour moi, le correctif consistait à cliquer avec le bouton droit sur mon module d'application Web> Maven> Mettre à jour le projet

TheBakker
la source
1

Une solution rapide que je préfère et qui me convient le mieux pour cette situation est simplement de supprimer le dossier .metadata de votre espace de travail et d'importer à nouveau vos projets. Si vous essayez toutes les autres options, cela ne garantira pas le succès. Parfois, les solutions ci-dessus fonctionnent parfois, vous passerez vos précieuses heures à corriger cette configuration.

Un jour, j'ai décidé de nettoyer mon poste de travail, j'ai arrangé les projets dans leurs dossiers appropriés en fonction des différents clients. En conséquence, tout a été gâché. Après avoir passé une journée entière, il ne s'est pas retrouvé dans un espace de travail fixe. Le lendemain, j'ai simplement supprimé le dossier .metadata de l'espace de travail et réimporté tous les projets. Bingo tout est prêt.

biswarup bannerjee
la source
1

Mettez <packaging>war</packaging>votre pom.xml si vous utilisez Maven. Dans ce cas, c'est peut-être avec un emballage en pot

Vous devez avoir des bibliothèques Maven dans l'assemblage de déploiement

Robson Martins
la source
0

L'utilisation de la "Mise à jour de la configuration du projet" a gâché le chemin de génération du projet.

Correction: ouvrez le menu "configurer le chemin de génération ..." (clic droit sur le projet) et corrigez les options incluses / exclues pour chaque dossier source. Cela a fonctionné pour moi.

kiwifrog
la source
0

Dans de nombreux cas, c'est un problème de facette java, la version jdk ou jre ou jsp est différente de la face du projet maven.

Ali.Mojtehedy
la source
0

La solution réelle pour moi a été d'installer "m2e-wtp - intégration Maven pour WTP". La solution de Marcelo n'est pas nécessaire dans ce cas.

Christian
la source
0

si rien de ce qui précède ne fonctionne, supprimez le .class de la classe d'écoute ie

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>
Abdullah Alshammari
la source
0

Cela fonctionne pour moi ..

Cliquez avec le bouton droit sur le projet Web maven Cliquez sur le menu «Propriétés» Sélectionnez «Ensemble de déploiement» dans le côté gauche de la fenêtre contextuelle Cliquez sur «Ajouter ...» Bouton dans le côté droit de la fenêtre contextuelle Cliquez sur «Entrées du chemin de génération Java» Cliquez sur le bouton «Suivant» Cliquez sur le bouton «Terminer», fermez maintenant automatiquement la fenêtre contextuelle New Assemby Directivies Cliquez maintenant sur le bouton «Appliquer» et sur le bouton OK Exécutez votre application Web

user6425667
la source
0

Cela m'est arrivé après avoir apporté des modifications à mon mappage Hibernate dans un projet IntelliJ utilisant Gradle. La simple reconstruction du projet a fonctionné pour moi.

Patience Mpofu
la source
0

Je suis tombé sur cela quelques fois par trimestre. Cette fois, j'ai eu un résumé des modifications minimales dans mon diff git et j'ai suivi le problème dans un chemin de classe réinitialisé (sans ma dépendance WEB-INF / lib) dans eclipse. Cela semble se produire chaque fois que j'arrive ou que je retire des projets maven parent / frère.

Il est fait mention de l'ajout de vos jars à ressort à la bibliothèque de conteneurs Web tomcat - c'est correct et c'est la façon dont la plupart des serveurs EE fonctionnent. Cependant, sachez qu'en plaçant le ressort plus haut dans l'arborescence du chargeur de classe sur tomcat, vous exécuterez plus haut que le niveau du chargeur de classe de votre contexte de guerre. Je vous recommande de laisser les bibliothèques dans un chargeur de classe de niveau inférieur per / war.

Nous voyons ce qui suit après un .classpath tronqué après un changement de projet structurel dans l'éclipse.

Dec 18, 2016 11:13:39 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

Mon chemin de classe a été réinitialisé et la dépendance WEB-INF / lib a été supprimée.

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

remettre

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

et tout ira bien.

merci / michael

Michael O'Brien
la source
0

Je l'ai obtenu lorsque j'avais la bibliothèque dans mon chemin de génération, mais pas dans mon assemblage de déploiement. Aussi quand j'avais un context.xml manquant.

Noumenon
la source