2011-06-12 15 views
33

Ricevo la seguente eccezione quando provo ad avviare Tomcat tramite Eclipse (facendo clic con il tasto destro del mouse su Progetto, Esegui come -> Esegui sul server).Tomcat & Spring Web - Classe non trovata Eccezione org.springframework.web.context.ContextLoaderListener

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 12, 2011 8:46:11 PM org.apache.catalina.core.StandardContext listenerStart 

Sto costruendo il mio progetto utilizzando Maven (m2eclipse). Ho aggiunto le dipendenze necessarie alle librerie Spring e posso vedere il file spring-web.jar nella directory lib della risorsa finale (che contiene la classe). Quando distribuisco l'applicazione all'esterno di IDE, funziona correttamente.

Qualsiasi suggerimento sul perché questo accada sarebbe molto apprezzato.

+1

Se le informazioni fornite siano corrette, si dice che il La distribuzione di Tomcat all'interno di Eclipse non è al corrente di quel JAR.Il fatto che funzioni bene al di fuori dell'IDE dice che hai la WAR giusta, ma Eclipse si riferisce a qualcos'altro. Cerca la versione esplosa di Eclipse per vedere dove manca. – duffymo

+0

dove posso trovare la versione esplosa in eclissi? –

risposta

78

Ho affrontato lo stesso problema pochi giorni fa con m2eclipse (senza aggiunta di integrazione WTP disponibile tramite m2eclipse-extras) su Eclipse Indigo. Ho creato un modulo Web Maven e aggiunto manualmente il facet del modulo Web dinamico. Quando l'ho distribuito su Eclipse WST Tomcat Server, è apparso che le mie dipendenze Maven non venivano inviate al server quando il progetto viene pubblicato su di esso.

La soluzione era semplice. Fare clic con il pulsante destro del mouse sul progetto Web in Esplora progetti -> selezionare "Proprietà". Sotto le proprietà del progetto, seleziona "Deployment Assembly".

La pagina delle proprietà dell'Assieme di distribuzione mostra il contenuto che verrà pubblicato come un oggetto assemblato da Eclipse sul server. Devi dire a Eclipse che vuoi che anche tutte le tue dipendenze Maven siano pubblicate.

Per fare ciò, fare clic sul pulsante "Aggiungi", quindi selezionare "Voci del percorso di costruzione Java". Fare clic su Avanti e selezionare Dipendenze Maven. Questo pubblicherà i file JAR di dipendenza Maven nella cartella lib quando Eclipse pubblica il progetto nel server WST.

Questo approccio ha funzionato per me.

+0

Mi stavo chiedendo dove fosse l'interfaccia utente in Eclipse - usato per essere Dipendenze del modulo J2EE o qualcosa del genere, grazie! –

+1

diavolo si! per tutti quelli che vengono qui. questa è la risposta corretta! – Gleeb

+2

Questo non funziona per me. Ho un progetto web A che dipende da B tramite pom.xml; "Dipendenze Maven" è già elencato nel Deployment Assembly, come è B. Nota: il percorso di distribuzione per B è "WEB-INF/lib/B-0.1.0-SNAPSHOT.jar", e non cambia a seconda che B è aperto in Eclipse o no. Il percorso di costruzione di Eclipse cambia correttamente (sia il progetto Eclipse o il jar nel mio repository) per riflettere se il progetto è aperto o meno. Sto usando SpringSource Tool Suite 2.9.2.RELEASE. Ricevo ancora una ClassNotFoundException in fase di esecuzione anche se la classe si risolve correttamente in Eclipse. Perplesso. – djb

4

Il modo più semplice per dire cosa Eclipse inserirà nel file di guerra per le distribuzioni server è fare un clic con il pulsante destro del mouse -> Esporta -> file WAR. È quindi possibile decomprimere questo e vedere cosa c'è dentro.

Se si apre ".settings/org.eclipse.wst.common.component" si dovrebbe vedere la definizione della webapp strumenti web, e vedere qualcosa di simile:

<project-modules id="moduleCoreId" project-version="1.5.0"> 
<wb-module deploy-name="MyApp"> 
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/> 
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> 
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> 
    <property name="java-output-path" value="target/classes"/> 
    <property name="context-root" value="MyApp"/> 
</wb-module> 
</project-modules> 

Sul percorso di generazione in Eclipse, assicurati che "Dipendenze Maven" appaia nelle Librerie. Le ultime versioni del plugin m2eclipse e WST dovrebbero raccogliere automaticamente le dipendenze Maven e rilasciarle in WEB-INF/lib all'interno del tuo file di guerra.

Ultimo ma non meno importante, si consiglia di prendere in considerazione la raccolta dell'ultima copia di SpringSource Tool Suite (STS). STS ha una serie di buone caratteristiche, incluso il bundling degli ultimi m2eclipse e WST. Puoi ancora usarlo con Tomcat (o con la sua versione di Tomcat) e contiene alcuni archetipi e tutorial per far funzionare rapidamente una webapp.

Divertiti!

0

Aggiungere questi file (a seconda di quale rilascio che si capita di usare) per

apache-tomcat-8.0.35\lib 

cartella (e riavviare il server):

spring-aop-4.0.1.RELEASE.jar 
spring-beans-4.0.1.RELEASE.jar 
spring-context-4.0.1.RELEASE.jar 
spring-core-4.0.1.RELEASE.jar 
spring-expression-4.0.1.RELEASE.jar 
spring-web-4.0.1.RELEASE.jar 
spring-webmvc-4.0.1.RELEASE.jar 
Problemi correlati