2011-01-24 31 views
12

Sto provando a configurare un'applicazione Web su Eclipse. Sto usando Tomcat 6.0 e jdk 1.6.0_23. Per qualche motivo sto ottenendo questo errore:Impossibile trovare Log4jConfigListener - Impossibile avviare il contesto

 
SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener 
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Jan 24, 2011 11:44:08 AM 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:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

ho controllato se sono stati aggiunti al percorso di generazione tutte le librerie e tutto sembra corretto. log4j-1.2.15.jar è incluso e tutte le librerie primarie necessarie.

Sono molto confuso su quale sia il problema, soprattutto perché il progetto funzionava correttamente su un altro computer. Qualsiasi aiuto con questo problema sarà molto apprezzato.

Naftal

+0

puoi elencare le librerie che hai incluso –

+0

Sto usando Hibernate quindi ho delle librerie di ibernazione come hibernate-annotations.jar, hibernate3.jar ecc. Ma secondo lo stacktrace, sembra che manchi una delle librabries di springframework. Ho queste librerie primaverili: - spring.jar, spring-aop.jar, spring-aspects.jar, spring-beans.jar, spring-context.jar, spring-context-support.jar, spring-core.jar, spring -jdbc.jar, spring-test.jar, spring-web.jar, spring-webmvc.jar – 1000Suns

+0

ok allora non c'è il barattolo a molla, vero? –

risposta

4

classe L'org.springframework.web.util.Log4jConfigListener non è sicuramente nel classpath.

La prima cosa che suggerirei è di alzare il livello di registrazione in Tomcat - nella cartella conf - in "ALL" o "DEBUG" in modo da poter vedere esattamente cosa sta succedendo nel contenitore sta impedendo che questa classe venga trovata.

In secondo luogo, vi consiglio di controllare i file JAR per il file di classe mancante eseguendo grep, se su linux/mac:

# run at the root of your lib folders: 
    grep -ri "org.springframework.web.util.Log4jConfigListener" * 

Il comando precedente restituirà tutti i file JAR che contengono quel pacchetto. Una volta isolato il file JAR, è possibile risolvere ulteriormente il problema.

In terzo luogo, assicurarsi di non avere conflitti. Versioni multiple di Log4j che si trovano nel tuo classpath causeranno il caos. Come si suppone che il sistema sappia quale pacchetto org.springframework.web.util.Log4jConfigListener da caricare se ce ne sono 2? Tomcat ha 3 differenti cartelle percorso di classe:

shared/lib 
lib 
webapps/yourapp/WEB-INF/lib 

assicurarsi di avere solo un file JAR log4j in una sola di queste cartelle.

+0

Rimuoverò semplicemente tutte le librerie e ricomincio da zero. Grazie per tutto l'aiuto. – 1000Suns

3

Se si utilizza Maven ed Eclipse

1) guardare nel tuo progetto web .classpath file. Se hai una voce classpath "org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER", assicurati che l'attributo sia presente anche lì.

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

2) Se questo non funziona, quindi fare clic destro sul vostro progetto web in Eclipse e andare a Proprietà - dipendenze> Modulo JavaEE. Assicurati che la casella Dipendenze Maven sia spuntata.

quindi salvare, costruire secondo suggerimento implementare bla bla

+0

Ehi, grazie, questo funziona per me per eclissi Helios! – Badal

36

di Reticulogic è corretta. Tuttavia, in Eclipse Helios, l'opzione "Dipendenze del modulo Java EE" è stata rimossa. La correzione di Helios è la seguente:

  1. Fare clic destro sul vostro progetto in Eclipse e andare a Proprietà -> Assemblea Deployment
  2. Fare clic su "Aggiungi ..."
  3. Selezionare "Java Build Path Entries" e fare clic su "Avanti"
  4. selezionare "Maven Dipendenze" e fare clic su "Fine"
+3

Grazie mille! Sei rimasto bloccato su questo per secoli - Bounty si avvicina. –

+1

Questa soluzione funziona anche per me su eclissi Helios. – Badal

+1

Ottima soluzione! – Eyal

1

Una soluzione semplice è quello di pulire la directory di Tomcat in Eclipse. Ha funzionato per me.

+1

Come lo faresti? – likeitlikeit

+0

In Eclipse Mars, nel riquadro di visualizzazione dei server, fare clic con il pulsante destro del mouse sull'istanza del server, quindi selezionare "Pulisci ..." o "Pulisci directory di lavoro Tomcat ..." – chrisinmtown

0

Se si utilizza, log4j2, è possibile trovare queste classi in

org.apache.logging.log4j.web.* 

pacchetto.

Problemi correlati