2012-02-13 12 views
6

Ho appena installato tomcat tramite il gestore di pacchetti ubuntu. Apro il registro e la prima cosa che vedo è un'eccezione interessante.Impostazione Apache Tomcat java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor

java.lang.NoClassDefFoundError: org/Spring Framework/asm/ClassVisitor

mi sto perdendo qualcosa nel montaggio?

Va detto che il motivo per cui ho reinstallato in primo luogo era che stavo dando il mio primo accesso ai servizi web che utilizza Tomcat e che non funzionava. Ma per ora: perché ricevo questa eccezione? ho incollato l'intero registro per gentilezza:

Feb 13, 2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
Feb 13, 2012 10:00:17 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:593) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329) 
... 31 more 
Feb 13, 2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class  org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:593) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329) 
... 31 more 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
+1

Sembra che non abbia incluso il file spring-asm-X.Y.Z.RELEASE.jar nel classpath. –

+0

Mi rendo conto che mi manca un barattolo. Divertente che non è incluso nell'installazione del gestore di pacchetti quando piange per questo prima ancora di usarlo. Qualche idea su dove posso ottenere il barattolo? –

+0

Spring non fa parte della distribuzione standard di Tomcat. È un contenitore di inversione delle dipendenze che puoi utilizzare sulle tue app. Detto questo, è tua responsabilità aggiungere tutte le dipendenze richieste nel classpath del tuo webapp. –

risposta

8

Sembra Tomcat sta cercando di distribuire una web app che si basa su Spring ASM, ma non riesce a trovare il file JAR per la primavera ASM nel classpath . Non sono sicuro della versione di Spring utilizzata dall'app Web, ma l'ultima versione (ad oggi) per quel file JAR è 3.1.0.RELEASE.

Se stai usando Maven, è possibile aggiungere il file JAR manca al progetto aggiungendo questo al pom.xml del progetto:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>org.springframework.asm</artifactId> 
    <version>3.1.0.RELEASE</version> 
</dependency> 

Se non stai usando Maven per gestire le dipendenze, quindi puoi ottenere org.springframework.asm-3.1.0.RELEASE.jar (o qualsiasi altra versione di cui hai bisogno) scaricando l'intero Spring Framework da http://www.springsource.org/spring-community-download. Il file jar ASM dovrà quindi essere inserito nella cartella WEB-INF/lib del progetto.

+0

Non sto distribuendo nulla. Questo è il file di registro appena uscito dall'installazione. Non ho distribuito nulla –

+0

D'altra parte ... Questo non è un nuovo computer, quindi potrebbe esserci qualcosa nel percorso da qualche parte il suo tentativo di avviare che una reinstallazione non ha ucciso. Lo esaminerò. –

+0

Questa macchina ha già avuto Tomcat. E aveva una speciale configurazione per il supporto webservice, e lo era, c'era un file di guerra. Non era stato disinstallato. Quando l'ho rimosso e reinstallato, i messaggi di errore sparivano. –

2

L'approccio comune per gestire questa situazione

1) stabilire che cosa biblioteca barattolo contiene classs mancante.

2) verificare che questo barattolo presenta in classpath

+0

L'ho capito molto, ma non ho idea di cosa manca, non ho mai usato la primavera e questa è un'installazione completamente nuova di Tomcat. Sto scrivendo questo perché ho problemi a seguire l'approccio comune, poiché non ho idea di quale jar mi serva. –

+0

Sembra che Gabriel indichi esattamente il barattolo nel commento alla domanda.Purtroppo non posso dire quale vaso ti manca esattamente, dal momento che non conosco la tua versione primaverile e altre dipendenze. – Anton

1

Questo errore deriva molto probabilmente dalle voci presenti nel web.xml. Ad esempio, se si dispone di questo - org.springframework.web.servlet.DispatcherServlet. !! Così, quando Tomcat si avvia, load-on-startup cerca di trovare il contesto primavera asm, ma probabilmente assemblyis distribuzione mancanti il ​​vaso esperto di dipendenza (anche se il vaso è disponibile) Per risolvere questo provate ad impostare il sotto

**Basiaclly In project options you should include Maven Dependencies to your Deployment Assembly** 

1. Project properties-> Deployment Assembly -> Add.. 

2. Java Build Path Entries -> Maven Dependencies 

3. Finish 

Run mavem clean install and run on server. The error should go away. 
1

Nel mio caso, il problema era in 2 versioni di Java installate sul computer: Java 7 e Java 8. Unisntalling Java 7 risolto problema.

Problemi correlati