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


290

Ich habe diese in den Erstellungspfad aufgenommen :

  • alle Frühlingsbibliotheken
  • Apache Tomcat 7.0 Bibliothek

Das Projekt schlägt beim Start immer noch fehl:

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)

In org.sprintframework.web-3.1.0.M1.jarkann ich das sehen org.springframework.web.context.ContextLoaderListener.

Jemand bei Google sagt, dass spring.jardies enthalten sein sollte, aber ich sehe keine spring.jarin der 3.x-Distribution.

Eclipse 3.6.2
Tomcat 7

Bearbeiten: Jemand im Frühlingsforum (offline) sagte, dass "Abhängigkeiten automatisch aktualisieren" in den Projekteigenschaften aktiviert werden sollte, aber ich sehe so etwas in den Projekteigenschaften nicht.


1
Schließen Sie das Projekt, erstellen Sie einen neuen Arbeitsplatz und stellen Sie sicher, dass die Abhängigkeiten in POM bestehen. Ich musste mich diesem Problem stellen, wurde aber nach Korrektur in Abhängigkeiten behoben
MLS

Können Sie bitte den Inhalt Ihres .war / lib-Ordners veröffentlichen? Oder zumindest alles, was ist. * Frühling. * \. Glas.
Simeon

Selbst wenn ich pom die folgende Abhängigkeit hinzufügte, hatte ich immer noch den gleichen Fehler. <dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artefakt-id> <version> {spring-version} </ version> </ dependency> Ich habe den Maven hinzugefügt, wie andere vorgeschlagen haben Abhängigkeiten zur Bereitstellungsassembly. Und wenn ich den POM mit anderen Abhängigkeiten aktualisiere und maven> update project mache, tritt der Fehler immer wieder auf. Die Überprüfung der Bereitstellungsbaugruppe zeigt, dass Maven-Abhängigkeiten ausgeschlossen werden. Ich musste den obigen Vorgang erneut wiederholen.
Tadele Ayelegn

1
Diese Lösung funktionierte für die meisten. Fügen Sie der Bereitstellungsassembly Abhängigkeiten hinzu.
Lokesh

Antworten:


777

Ich hatte ein ähnliches Problem beim Ausführen einer Spring-Webanwendung in einem von Eclipse verwalteten Tomcat. Ich habe dieses Problem gelöst, indem ich der Webbereitstellungsassembly des Projekts Maven-Abhängigkeiten hinzugefügt habe.

  1. Öffnen Sie die Projekteigenschaften (z. B. klicken Sie im Projektexplorer mit der rechten Maustaste auf den Namen des Projekts und wählen Sie "Eigenschaften").
  2. Wählen Sie "Deployment Assembly".
  3. Klicken Sie am rechten Rand auf die Schaltfläche "Hinzufügen ...".
  4. Wählen Sie "Java Build Path Entries" aus dem Menü des Direktiventyps und klicken Sie auf "Weiter".
  5. Wählen Sie "Maven Dependencies" aus dem Menü "Java Build Path Entries" und klicken Sie auf "Finish".

Der Definition der Web Deployment Assembly sollte "Maven Dependencies" hinzugefügt werden.


6
So solltest du es machen, richtig in Eclipse.
Pap

18
Ich hatte das gleiche Problem. Ich kann 'Deployment Assembly' jedoch nicht unter 'Eigenschaften' (in einem Modul meines Multimodul-Maven-Projekts) sehen.
gtiwari333

9
Dies ist richtig, wenn auch sehr ärgerlich. Vielleicht sollte sich meiner Meinung nach etwas um ein m2e-Plugin kümmern.
RickB

10
Ich sehe, dass Maven-Abhängigkeiten zur Definition der Web Deployment Assembly hinzugefügt wurden, erhalte aber weiterhin den Fehler.
Dabadaba

10
Was ist, wenn Java Build Path Entries nichts enthält? Ich bin in diesem Fall.
Vdolez

117

Das Gleiche passiert mir von Zeit zu Zeit, wenn ich Eclipse WDT verwende. Es ist besonders frustrierend, wenn dies bei einem unveränderten und zuvor funktionierenden Projekt passiert. Dies ist, was ich tue, um es in diesem letzten Szenario zu beheben:

  1. Stoppen Sie Tomcat (wenn es läuft)
  2. Öffnen Sie die Ansicht "Server": Fenster> Ansicht anzeigen> Andere> Server> Server
  3. Klicken Sie mit der rechten Maustaste auf Tomcat Server> Tomcat-Arbeitsverzeichnis bereinigen.
  4. Klicken Sie mit der rechten Maustaste auf Tomcat Server> Bereinigen
  5. Starten Sie den Server neu

Dies behebt normalerweise das von Ihnen erwähnte Problem.


3
Für diese spezielle Situation gibt es einen Fehlerbericht ( bugs.eclipse.org/bugs/show_bug.cgi?id=365748 ). Eclipse-Entwickler benötigen weitere Informationen und Möglichkeiten zur Reproduktion des Problems.
Chucky

1
gut das ist die flexible lösung für alle, diese antwort muss als antwort markiert werden. Gute Arbeit Chepech
Java Fragen

3
Dies ist wirklich die einfachste Lösung für dieses Problem. Danke Chepech!
Badal

2
Dies hat mir bei der Verwendung von Eclipse 4.4 nicht geholfen. Ich musste Susies Methode zum Entfernen / Hinzufügen der Bereitstellung zu Tomcat verwenden. Ich habe den Tomcat-Bereitstellungsordner überwacht, als ich die Bereinigungen durchgeführt habe. Ich weiß nicht, warum beim Bereinigen der Bereitstellungsordner nicht bereinigt wird.
Seliger Geek

1
Die Bereitstellungsassembly ist der richtige Weg, aber wenn sie aufgrund von Beschädigungen oder Ähnlichem nicht funktioniert, wird sie durch diese Bereinigung tatsächlich behoben.
Calabacin

26

Sie können "Clean Tomcat Work Directory" oder einfach "Clean .." ausprobieren. Dies soll alle veröffentlichten Zustände verwerfen und von Grund auf neu veröffentlichen.


Danke für diese Lösung! Die oben akzeptierte Antwort hat dieses Problem für mich nicht gelöst, Ihre jedoch.
GreenTurtle

25

Ich habe IntelliJ IDEA verwendet, die Kompilierung ist erfolgreich, aber beim Starten von Tomcat heißt es:

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

Am Anfang dachte ich, dass das JAR fehlt, aber es war vorhanden.

Lösung: File > Project Structure > Artifactsim Output LayoutDoppelklick im rechten Fensterbereich Available Elementsder Bibliothek mit dem Namen wie Maven:..., wird es verschoben wird WEB-INF/libim linken Fensterbereich.

Akzeptieren Sie Tomcat und starten Sie es neu.


Diese Antwort ist nicht genau relevant für die gestellte Frage, da OP Eclipse
Adam Michalik

10
Aber es hat mir geholfen.
Udaybhaskar

8

Dies ist sicherlich ein Problem im Zusammenhang mit Eclipse. Was für mich funktioniert hat, ist das Erstellen eines neuen Servers auf der Registerkarte "Eclipse-Server". Führen Sie dann Ihre Anwendung auf diesem neuen Server aus, es sollte funktionieren.



7

Wenn alles oben Genannte nicht funktioniert, versuchen Sie Folgendes. Es hat bei mir funktioniert.

Entfernen Sie Ihr Projekt vom Server> Server neu starten> Projekt zum Server hinzufügen> Server neu starten.

Detaillierte Anleitung:

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.

5

Ich hatte das gleiche Problem mit einem Eclipse-Projekt, das für die Tomcat 7-Laufzeit konfiguriert wurde

Klicken Sie mit der rechten Maustaste auf Projekt und gehen Sie zu den Projekteigenschaften. Klicken Sie auf Deployment Assembly. Ich konnte feststellen, dass meine Spring Library Jars, die ich während der Kompilierungszeit mit einer Benutzerbibliothek erstellt hatte, fehlten. Fügen Sie einfach die Gläser hinzu und Sie sollten beim Start von Tomcat keine Fehler in der Konsole sehen


5

Wenn Sie maven verwenden, ist das Projekt möglicherweise noch nicht erstellt. Führen Sie zuerst eine mvn clean packageerneute Bereitstellung durch.


Eclipse 3.6.2 + Tomcat 7
Smaragdhieu

4

Lösung für Eclipse Luna:

  1. Klicken Sie mit der rechten Maustaste auf das Maven-Webprojekt
  2. Klicken Sie auf das Menü 'Eigenschaften'
  3. Wählen Sie links im angezeigten Fenster "Bereitstellungsbaugruppe" aus
  4. Klicken Sie rechts im eingeblendeten Fenster auf die Schaltfläche "Hinzufügen ..."
  5. Nun erscheint ein weiteres Popup-Fenster (New Assembly Directivies)
  6. Klicken Sie auf "Java Build Path-Einträge".
  7. Klicken Sie auf die Schaltfläche "Weiter"
  8. Klicken Sie auf die Schaltfläche "Fertig stellen" und schließen Sie das Popup-Fenster "Neue Assemby-Direktiven"
  9. Klicken Sie nun auf die Schaltfläche "Übernehmen" und dann auf die Schaltfläche "OK"
  10. Führen Sie Ihre Webanwendung aus

4

Wenn Sie IntelliJ IDEA verwenden und eine Anwendung auf Tomcat Server bereitstellen, heißt es: Im Menü Datei -> Projektstruktur auswählen -> auf Artefakt klicken -> Ihre Gläser auswählen und mit der rechten Maustaste klicken -> WEB \ lib eingeben -> Server neu startenGeben Sie hier die Bildbeschreibung ein


3

Eigentlich ist das ein Problem von Tomcat. Gehen Sie einfach in den Ordner 'lib' Ihres Projekts und kopieren Sie alle 'Spring'-bezogenen Gläser in diesen. Aktualisieren Sie Ihr Projekt und Sie können loslegen. Dieses Problem besteht manchmal weiterhin, da Tomcat Spring-Kernklassen nicht finden kann.


2

Ich hatte auch den gleichen Fehler. Ich hatte die folgende Abhängigkeit nicht in meine POM-Datei eingefügt.

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

Aber mein Projekt lief noch, bevor ich diese Abhängigkeit hinzugefügt hatte. Aber irgendwann hörte es auf und gab den gleichen obigen Fehler aus.

Wenn jemand diesen Fehler nicht lösen konnte, kann er ihn auch über diesen Link beheben


1
<dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ifactId> <version> 4.1.6.RELEASE </ version> </ dependency> Durch Hinzufügen dieser Option konnte ich diesen Fehler beheben.
Ashutosh S

2

Ich hatte das gleiche Problem. Ich habe es behoben, indem ich meinem Pom eine Spring-Web-Abhängigkeit hinzugefügt habe. Stellen Sie sicher, dass Sie das Spring-Web-Jar verwenden, dessen ContextLoaderListener- Klasse erweitert. ContextLoader implementiert ServletContextListener und befindet sich im Paket org.springframework.web.context. Ich habe 3.0.4.RELEASE verwendet


1

Ich habe es versucht

  • Projekt sauber mvn
  • reinigen
  • Tomcat-Arbeitsverzeichnis automatisch bereinigen
  • Abhängigkeiten aktualisieren

Das einzige, was zumindest vorübergehend funktionierte, war das Hinzufügen von Maven-Abhängigkeiten zur Definition der Web Deployment Assembly

Das funktioniert aber nicht für immer! Nach ein paar Tagen funktioniert es nicht mehr. Meine Lösung bestand darin, Maven-Abhängigkeiten zu entfernen, Änderungen anzuwenden und Maven-Abhängigkeiten erneut hinzuzufügen.

Ich benutze - Eclipse Juno - Embedded Maven - Tomcat 7


1

Für Gradle-Benutzer funktioniert es mit den folgenden Schritten

1) Stoppen und löschen Sie den Tomcat-Server in Eclipse von der Registerkarte Server

Eclipse Tomcat Tab

2) Bereinigen Sie die Webanwendung und das Arbeitsverzeichnis von der Tomcat-Installation . (Referenz, Anleitung : Löschen Sie den Tomcat-Cache und beheben Sie veraltete JSP-Probleme. )

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

3) Reinigen und verdunkeln Sie das Projekt mit dem Build-Tool

$ ./gradlew clean eclipse// entsprechenden Befehl für mvnBenutzer auslösen,$ mvn clean package

4) Konfigurieren Sie einen neuen Tomcat-Server in Eclipse und führen Sie das Projekt erneut aus.


1

Auch ich hatte das gleiche Problem ... und wurde durch die folgenden Schritte gelöst:

RC (Rechtsklick auf Webprojekt) -> Eigenschaften -> Bereitstellungsassembly -> Hinzufügen -> Java-Erstellungspfadeinträge -> Weiter -> Fehlende JAR-Dateien auswählen -> Weiter -> Fertig stellen

Anwendung läuft erfolgreich ...


Ich habe den OP-Fehler, aber in meiner Bereitstellungsassembly fehlten keine JAR-Dateien.
Blamkin86

1

Ich habe das gleiche Problem und habe es mit den oben genannten Schritten behoben. Aber nein, wenn ich dieses Problem erneut habe und Folgendes versuche:

RC (Rechtsklick auf Webprojekt) -> Eigenschaften -> Bereitstellungsassembly -> Hinzufügen -> Java-Erstellungspfadeinträge -> Weiter ->

Nachdem Sie auf Weiter geklickt haben, wird nur ein leeres Fenster mit deaktivierten Optionen Weiter und Fertig angezeigt. Was kann ich jetzt tun?


1

Ich hatte das gleiche Problem.

Entfernen Sie einfach den Server aus der Konfiguration und fügen Sie ihn nach dem Neustart von Eclipse wieder hinzu, indem Sie ihn zur Server-Laufzeitumgebung hinzufügen.


1

Für mich bestand die Lösung darin, mit der rechten Maustaste auf mein Webanwendungsmodul> Maven> Projekt aktualisieren zu klicken


1

Eine schnelle Lösung, die ich für diese Situation am besten geeignet finde, besteht darin, einfach den Metadatenordner Ihres Arbeitsbereichs zu löschen und Ihre Projekte erneut zu importieren. Wenn Sie alle anderen Optionen ausprobieren, wird der Erfolg nicht garantiert. Manchmal funktionieren die oben genannten Lösungen, manchmal verbringen Sie Ihre kostbaren Stunden damit, diese Konfiguration zu reparieren.

Eines Tages beschloss ich, meinen Arbeitsplatz zu reinigen. Ich ordnete die Projekte nach verschiedenen Kunden in die entsprechenden Ordner. Infolgedessen wurde alles durcheinander gebracht. Nachdem es einen ganzen Tag verbracht hatte, landete es nicht in einem festen Arbeitsbereich. Am nächsten Tag habe ich einfach den .metadata-Ordner des Arbeitsbereichs gelöscht und alle Projekte erneut importiert. Bingo fertig.


1

Setzen Sie <packaging>war</packaging>in Ihrem pom.xml , wenn Sie Maven verwenden. In diesem Fall ist es vielleicht mit Glasverpackung

Sie müssen Maven-Bibliotheken in Deployment Assembly haben


0

Durch die Verwendung der "Projektkonfiguration aktualisieren" wurde der Erstellungspfad des Projekts durcheinander gebracht.

Fix: Öffnen Sie das Menü "Build-Pfad konfigurieren ..." (Rechtsklick auf das Projekt) und korrigieren Sie die Optionen "Eingeschlossen" / "Ausgeschlossen" für jeden Quellordner. Das hat bei mir funktioniert.


0

In vielen Fällen handelt es sich um ein Java-Facettenproblem. Die JDK- oder JRE- oder JSP-Version unterscheidet sich von der Maven-Projektfläche.


0

Die eigentliche Lösung für mich war die Installation der "m2e-wtp - Maven Integration für WTP". Die Lösung von Marcelo ist in diesem Fall nicht erforderlich.


0

Wenn nichts von oben funktioniert, entfernen Sie die .class aus der Listener-Klasse, dh

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

0

Das funktioniert bei mir ..

Klicken Sie mit der rechten Maustaste auf das Maven-Webprojekt. Klicken Sie auf das Menü "Eigenschaften". Wählen Sie "Bereitstellungsassembly" auf der linken Seite des Popup-Fensters. Klicken Sie auf die Schaltfläche "Hinzufügen ..." auf der rechten Seite des Popup-Fensters. Nun wird ein weiteres Popup-Fenster angezeigt (Neue Assembly-Direktiven). Klicken Sie auf "Java Build Path-Einträge". Klicken Sie auf die Schaltfläche "Weiter". Klicken Sie auf die Schaltfläche "Fertig stellen". Schließen Sie nun automatisch das Popup-Fenster "Neue Assemby-Direktiven". Klicken Sie nun auf die Schaltfläche "Übernehmen" und die Schaltfläche "OK". Führen Sie Ihre Webanwendung aus


0

Dies geschah mir, nachdem ich in einem IntelliJ-Projekt mit Gradle Änderungen an meinem Ruhezustand vorgenommen hatte. Das Projekt einfach wieder aufzubauen hat bei mir funktioniert.


0

Ich bin ein paar Mal im Quartal darauf gestoßen. Dieses Mal hatte ich eine minimale Änderungszusammenfassung in meinem Git-Diff und verfolgte das Problem in einem zurückgesetzten Klassenpfad (ohne meine WEB-INF / lib-Abhängigkeit) in Eclipse. Dies scheint jedes Mal zu geschehen, wenn ich Eltern- / Geschwister-Maven-Projekte ein- oder ausziehe.

Es wird erwähnt, dass Sie Ihre Spring Jars zur Tomcat-Webcontainer-Bibliothek hinzufügen - dies ist in Ordnung und die Art und Weise, wie die meisten EE-Server ausgeführt werden. Beachten Sie jedoch, dass Sie durch Platzieren der Feder im Klassenladebaum auf Tomcat höher als die Klassenladeebene Ihres Kriegskontexts laufen. Ich empfehle Ihnen, die Bibliotheken in einem Klassenladeprogramm der unteren Ebene pro Krieg zu belassen.

Wir sehen Folgendes nach einem abgeschnittenen Klassenpfad nach einer strukturellen Projektänderung in Eclipse.

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

Mein Klassenpfad wurde zurückgesetzt und die WEB-INF / lib-Abhängigkeit wurde entfernt.

<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>

zurück geben

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

und du wirst in Ordnung sein.

danke / michael


0

Ich habe dies erhalten, als ich die Bibliothek in meinem Erstellungspfad hatte, aber nicht in meiner Bereitstellungsassembly. Auch wenn ich eine fehlende context.xml hatte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.