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


290

Ho incluso questi nel percorso di costruzione :

  • tutte le librerie di primavera
  • Libreria Apache Tomcat 7.0

Il progetto non riesce ancora all'avvio:

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.jar, posso vedere il org.springframework.web.context.ContextLoaderListener.

Qualcuno su Google dice che spring.jardovrebbe essere incluso ma non ne vedo nessuno spring.jarnella distribuzione 3.x.

Eclipse 3.6.2
Tomcat 7

Modifica: Qualcuno sul forum di primavera (offline) ha detto che "Aggiorna automaticamente le dipendenze" dovrebbe essere controllato nelle proprietà del progetto ma non vedo nulla di simile nelle proprietà del progetto.


1
chiudere il progetto, creare un nuovo posto di lavoro, assicurarsi delle dipendenze in POM. ho dovuto affrontare questo problema, ma è stato risolto dopo la correzione delle dipendenze
MLS

Puoi pubblicare i contenuti della tua cartella .war / lib per favore. O almeno tutto ciò che è. * Primavera. * \. Vaso.
Simeon,

Anche se ho aggiunto la seguente dipendenza a pom, stavo ancora riscontrando lo stesso errore. <dipendenza> <gruppoId> org.springframework </groupId> <artifactId> spring-web </artifactId> <version> {Spring-Version} </version> </dependency> Quello che ho fatto è stato come altri hanno suggerito di aver aggiunto la maven dipendenze dall'assieme di distribuzione. E quando aggiorno il pom con altre dipendenze e faccio il progetto di aggiornamento maven, l'errore continua a venire. Ispezionando l'assemblaggio di distribuzione mi mostra che le dipendenze di Mven vengono eliminate. Ho dovuto ripetere nuovamente il processo sopra descritto.
Tadele Ayelegn,

1
Questa soluzione ha funzionato per la maggior parte. Aggiungi dipendenze all'assembly di distribuzione.
lokesh,

Risposte:


777

Ho avuto un problema simile durante l'esecuzione di un'applicazione web di primavera in un tomcat gestito da Eclipse. Ho risolto questo problema aggiungendo dipendenze maven nell'assemblaggio di distribuzione web del progetto.

  1. Apri le proprietà del progetto (ad esempio, fai clic con il pulsante destro del mouse sul nome del progetto in Esplora progetti e seleziona "Proprietà").
  2. Selezionare "Assembly di distribuzione".
  3. Fai clic sul pulsante "Aggiungi ..." sul margine destro.
  4. Selezionare "Java Build Path Entries" dal menu Tipo di direttiva e fare clic su "Avanti".
  5. Selezionare "Dipendenze Maven" dal menu Voci Java Build Path e fare clic su "Fine".

Dovresti vedere "Dipendenze Maven" aggiunte alla definizione dell'Assemblea di distribuzione Web.


6
Questo è il modo in cui dovresti farlo, il modo corretto in Eclissi.
pap

18
Avevo lo stesso problema. Ma non riesco a vedere "Deployment Assembly" in "Properties" (in un modulo del mio progetto di costruzione multi-modulo).
gtiwari333,

9
Questo è corretto, anche se molto fastidioso. Forse qualcosa a mio avviso dovrebbe occuparsi del plugin m2e.
RickB,

10
Vedo le dipendenze di Maven aggiunte alla definizione di Web Deployment Assembly ma continuo a ricevere l'errore.
Dabadaba,

10
Che cosa succede se Java Build Path Entries non contiene nulla? Sono in quel caso.
vdolez,

117

La stessa cosa mi succede di tanto in tanto quando uso Eclipse WDT. È particolarmente frustrante quando ciò accade a un progetto non modificato e precedentemente funzionante. Questo è quello che faccio per risolverlo in quest'ultimo scenario:

  1. Ferma Tomcat (se è in esecuzione)
  2. Apri la vista "Server": Finestra> Mostra vista> Altro> Server> Server
  3. Fare clic con il tasto destro su Tomcat Server> Pulisci directory di lavoro Tomcat.
  4. Fare clic con il tasto destro su Tomcat Server> Pulisci
  5. Riavvia il server

Questo di solito risolve il problema che menzioni.


3
Esiste una segnalazione di bug per quella situazione specifica ( bugs.eclipse.org/bugs/show_bug.cgi?id=365748 ). Gli sviluppatori di Eclipse hanno bisogno di maggiori informazioni a riguardo e modi per riprodurre il problema.
Chucky,

1
bene questa è la soluzione flessibile per tutti, questa risposta deve essere contrassegnata come risposta. Buon lavoro Chepech
Domande Java

3
Questa è davvero una soluzione più semplice per questo problema. Grazie Chepech!
Badal

2
Questo non mi ha aiutato a usare eclipse 4.4. Ho dovuto usare il metodo di Susie per rimuovere / aggiungere la distribuzione a Tomcat. Stavo monitorando la cartella di distribuzione Tomcat durante l'esecuzione delle pulizie. Non so perché la pulizia non pulisce la cartella di distribuzione.
Beato Geek,

1
L'assemblaggio di distribuzione è il modo giusto per farlo, ma se non funziona a causa di corruzione o cose del genere, questa pulizia lo risolve effettivamente.
Calabacin,

26

Puoi provare "Pulisci directory di lavoro Tomcat" o semplicemente "Pulisci ..". Questo dovrebbe scartare tutto lo stato pubblicato e ripubblicarlo da zero.


Grazie per questa soluzione! La risposta accettata sopra non ha risolto questo problema per me, ma la tua l'ha fatto.
GreenTurtle,

25

Ho usato IntelliJ IDEA, la compilazione ha esito positivo, ma quando si avvia Tomcat, si dice:

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

All'inizio, pensavo che mancasse il JAR, ma era a posto.

Soluzione: File > Project Structure > Artifactsnel Output Layoutdoppio clic nel pannello di destra Available Elementsla libreria denominata like Maven:..., verrà spostata WEB-INF/libnel riquadro di sinistra.

Accetta e riavvia Tomcat.


Questa risposta non è esattamente pertinente per la domanda posta poiché OP utilizzava Eclipse
Adam Michalik,

10
Ma mi ha aiutato.
udaybhaskar,

8

Questo è sicuramente un problema relativo a Eclipse. La cosa che ha funzionato per me è la creazione di un nuovo server nella scheda del server Eclipse. Quindi eseguire l'applicazione in questo nuovo server, dovrebbe funzionare.



7

Se tutto quanto sopra indicato non funziona, provare quanto segue. Ha funzionato per me.

Rimuovi il tuo progetto dal server> Riavvia il server> Aggiungi il tuo progetto al server> Riavvia il server.

Istruzioni dettagliate:

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

Stavo affrontando lo stesso problema per un progetto eclipse configurato per Tomcat 7 runtime

Fare clic con il tasto destro sul progetto e andare alle proprietà del progetto. Fare clic su Deployment Assembly. Ho notato che mancavano i miei vasetti della libreria di primavera che ho creato durante la compilazione con una libreria utente. Basta aggiungere i vasetti e non dovresti vedere errori nella console durante l'avvio di Tomcat


5

Se stai usando Maven, forse il progetto non è ancora stato realizzato. Prima di tutto, mvn clean packageprova a ridistribuire di nuovo.


Eclipse 3.6.2 + Tomcat 7
emeraldhieu

4

Soluzione per Eclipse Luna:

  1. Fare clic destro sul progetto Web Maven
  2. Fai clic sul menu "Proprietà"
  3. Selezionare "Assembly di distribuzione" nella parte sinistra della finestra visualizzata
  4. Fai clic sul pulsante "Aggiungi ..." nella parte destra della finestra visualizzata
  5. Ora appare un'altra finestra popup (Nuove direttive di assemblaggio)
  6. Fai clic su "Voci percorso Java Build"
  7. Fai clic sul pulsante "Avanti"
  8. Fare clic sul pulsante 'Fine', ora chiudere automaticamente la finestra popup Nuove direttive di assemblaggio
  9. Ora fai clic sul pulsante "Applica" e sul pulsante OK
  10. Esegui la tua applicazione web

4

Se si utilizza IntelliJ IDEA e si distribuisce l'applicazione su Tomcat Server, si dice: nel menu File -> seleziona la struttura del progetto -> fai clic su artefatto -> seleziona i tuoi vasetti e fai clic con il pulsante destro del mouse -> inserisci WEB \ lib -> riavvia il serverinserisci qui la descrizione dell'immagine


3

In realtà questo è un problema di Tomcat. Basta andare nella cartella "lib" del progetto e copiare tutti i vasetti relativi a "Spring" in questo. Aggiorna il tuo progetto e sei a posto. A volte questo problema persiste perché tomcat non è in grado di individuare le classi principali di Spring.


2

Ho anche avuto lo stesso errore. Non avevo aggiunto la seguente dipendenza nel mio file POM.

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

Ma il mio oggetto era in esecuzione anche prima che avessi aggiunto questa dipendenza. Ma ad un certo punto si è fermato e ha iniziato a dare lo stesso errore sopra.

Se qualcuno non è stato in grado di risolvere questo errore, può risolverlo anche tramite questo link


1
<dependency> <groupId> org.springframework </groupId> <artifactId> spring-web </artifactId> <version> 4.1.6.RELEASE </version> </dependency> L'aggiunta di questo mi ha aiutato a risolvere questo errore.
Ashutosh S

2

Ho avuto lo stesso problema. L'ho risolto aggiungendo la dipendenza Spring-Web nel mio pom. Assicurarsi di utilizzare vaso primavera-web che ha ContextLoaderListener classe estende ContextLoader implementa ServletContextListener e risiedono nel org.springframework.web.context pacchetto. Ho usato 3.0.4.RELEASE


1

Ho provato il

  • progetto mvn pulito
  • pulito
  • clean tomcat work directory Automaticamente
  • aggiornare le dipendenze

L'unica cosa che ha funzionato almeno temporaneamente è stata l'aggiunta delle dipendenze Maven alla definizione di Web Deployment Assembly

Ma questo non funziona per sempre! Dopo un paio di giorni smette di funzionare. La mia soluzione era quella di rimuovere le dipendenze Maven, applicare le modifiche e aggiungere nuovamente le dipendenze Maven.

Sto usando - eclissi Juno - embedded maven - tomcat 7


1

Per gli utenti di livello inferiore, funziona con i seguenti passaggi

1) Arrestare ed eliminare il server Tomcat dalla scheda Server in eclipse

scheda eclissi tomcat

2) pulire webapp e directory di lavoro dall'installazione di Tomcat , (Riferimenti, istruzioni: svuotare la cache di Tomcat e risolvere i problemi obsoleti di JSP )

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

3) pulire ed eclissare il progetto usando lo strumento di costruzione

$ ./gradlew clean eclipse// attiva il rispettivo comando per gli mvnutenti,$ mvn clean package

4) configurare un nuovo server Tomcat in eclipse ed eseguire nuovamente il progetto.


1

anch'io ho affrontato lo stesso problema .... e risolto seguendo i passaggi seguenti:

RC (tasto destro del mouse sul progetto Web) -> proprietà -> Assembly di distribuzione -> Aggiungi -> Java Path Path Entries -> Next -> seleziona i file jar mancanti -> next -> finish

L'applicazione funziona correttamente ...


Ho l'errore dell'OP, ma non c'erano file jar mancanti nel mio assembly di distribuzione.
Blamkin86,

1

Ho lo stesso problema e l'ho risolto utilizzando i passaggi sopra menzionati, ma no quando ho di nuovo questo problema e provo quanto segue,

RC (tasto destro del mouse sul progetto Web) -> proprietà -> Assembly di distribuzione -> Aggiungi -> Inserimenti percorso build Java -> Avanti ->

dopo aver cliccato su next è solo una finestra vuota con le opzioni Next e Fnish disabilitate. Cosa posso fare ora?


1

Ho affrontato lo stesso problema.

Appena rimosso il server dalla configurazione e aggiunto nuovamente dopo aver riavviato l'eclissi aggiungendolo all'ambiente di runtime del server.


1

Per me la soluzione era fare clic con il tasto destro sul mio modulo webapp> Maven> Aggiorna progetto


1

Una soluzione rapida che preferisco più adatta a questa situazione è semplicemente eliminare la cartella .metadata del tuo spazio di lavoro e importare nuovamente i tuoi progetti. Se provi tutte le altre opzioni non garantirà il successo. A volte le soluzioni di cui sopra funzionano a volte trascorrerai le tue preziose ore per correggere questa configurazione.

Un giorno ho deciso di pulire la mia postazione di lavoro e ho organizzato i progetti nelle loro cartelle adatte in base ai diversi clienti. Di conseguenza tutto è stato incasinato. Dopo aver trascorso un'intera giornata, non è finito in uno spazio di lavoro fisso. Il giorno dopo ho semplicemente eliminato la cartella .metadata dello spazio di lavoro e importato di nuovo tutti i progetti. Bingo tutto pronto.


1

Inserisci il <packaging>war</packaging>tuo pom.xml se stai usando Maven. In tal caso, forse è con l'imballaggio del barattolo

È necessario disporre delle librerie Maven in Deployment Assembly


0

L'uso di "Aggiorna configurazione progetto" ha incasinato il percorso di compilazione del progetto.

Correzione: aprire il menu "configura percorso di compilazione ..." (fare clic con il tasto destro del mouse sul progetto) e correggere le opzioni Incluso / Escluso per ciascuna cartella di origine. Questo ha funzionato per me.


0

In molti casi è un problema di sfaccettatura java, la versione jdk o jre o jsp è diversa dalla faccia del progetto maven.


0

La vera soluzione per me era installare "m2e-wtp - integrazione Maven per WTP". In questo caso la soluzione di Marcelo non è necessaria.


0

se non funziona nulla sopra, rimuovere .class dalla classe del listener, ad es

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

0

Questo funziona per me ..

Fare clic con il tasto destro del mouse sul progetto Web Mven Fare clic sul menu "Proprietà" Selezionare "Assemblaggio di distribuzione" nella parte sinistra della finestra visualizzata Fare clic sul pulsante "Aggiungi ..." nella parte destra della finestra visualizzata Ora viene visualizzata un'altra finestra popup (Nuove direttive di assemblaggio) Fare clic su "Inserimenti percorso build Java" Fare clic sul pulsante "Avanti" Fare clic sul pulsante "Fine", ora chiudere automaticamente la finestra popup Nuove direttive di assemblaggio Ora fare clic sul pulsante "Applica" e sul pulsante OK Esegui l'applicazione Web


0

Questo mi è successo dopo aver apportato modifiche alla mia mappatura di Hibernate in un progetto IntelliJ usando Gradle. La semplice ricostruzione del progetto ha funzionato per me.


0

Mi sono imbattuto in questo un paio di volte un quarto. Questa volta ho avuto un riepilogo delle modifiche minime nel mio git diff e ho rintracciato il problema in un percorso di classe di reset (mancando la mia dipendenza WEB-INF / lib) in eclipse. Questo sembra accadere ogni volta che inserisco o estraggo progetti di maven genitore / fratello.

Ci sono menzioni di aggiungere i tuoi vasetti a molla alla lib contenitore web tomcat - questo è ok ed è il modo in cui la maggior parte dei server EE viene eseguita. Tuttavia, tieni presente che posizionando la molla più in alto nell'albero del classloader su Tomcat, sarai più in alto rispetto al livello del classloader del tuo contesto di guerra. Ti consiglio di lasciare le librerie in un classloader di livello inferiore per / guerra.

Vediamo quanto segue dopo un .classpath troncato dopo una modifica del progetto strutturale in eclissi.

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

Il mio percorso di classe è stato ripristinato e la dipendenza WEB-INF / lib è stata rimossa.

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

rimettere a posto

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

e starai bene.

grazie / michael


0

Ho ottenuto questo quando avevo la lib nel mio percorso di compilazione, ma non nel mio assemblaggio di distribuzione. Anche quando avevo un context.xml mancante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.