2012-02-13 14 views
6

Acabo de instalar tomcat a través del administrador de paquetes ubuntu. Abro el registro y lo primero que veo es una excepción interesante.Apache Tomcat Setup java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor

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

Me estoy perdiendo algo en la instalación?

Debería decirse que la razón por la que reinstalé en primer lugar fue porque estaba dando mi primer intento en los servicios web usando Tomcat, y eso no funcionó. Pero por ahora: ¿por qué recibo esta excepción? Pegué toda la viga de la bondad:

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

Parece que no incluyó el archivo spring-asm-X.Y.Z.RELEASE.jar en el classpath. –

+0

Me doy cuenta de que me falta un frasco. Es curioso que no esté incluido en la instalación del administrador de paquetes cuando llora antes de que empiece a usarlo. ¿Alguna idea de dónde puedo obtener dicho tarro? –

+0

Spring no es parte de la implementación estándar de Tomcat. Es un contenedor de inversión de dependencia que puedes usar en tus aplicaciones. Dicho esto, es su responsabilidad agregar todas las dependencias requeridas en el classpath de su webapp. –

Respuesta

8

Parece que Tomcat está tratando de implementar una aplicación web que se basa en la primavera ASM pero no puede encontrar el archivo JAR para la primavera ASM en la ruta de clases . No estoy seguro de qué versión de Spring está usando su aplicación web, pero la última versión (hasta el día de hoy) para ese archivo JAR es 3.1.0.RELEASE.

Si está utilizando Maven, puede agregar el archivo JAR que falta para su proyecto mediante la adición de esto a pom.xml de su proyecto:

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

Si usted no está utilizando Maven para administrar sus dependencias, luego puede obtener org.springframework.asm-3.1.0.RELEASE.jar (o cualquiera que sea la versión que necesite) descargando todo Spring Framework desde http://www.springsource.org/spring-community-download. El archivo jar ASM deberá colocarse en la carpeta WEB-INF/lib de su proyecto.

+0

No estoy desplegando nada. Este es el archivo de registro directamente de la instalación. No he desplegado nada –

+0

Por otro lado ... Esta no es una computadora nueva, por lo que podría haber algo en el camino en algún lugar tratando de iniciar que una reinstalación no eliminó. Miraré eso. –

+0

Esta máquina ya tenía Tomcat en ella. Y sí tenía una configuración especial para el soporte del servicio web, y entonces, un archivo de guerra estaba allí. No ha sido desinstalado. Cuando lo eliminé y volví a instalar, los mensajes de error desaparecieron. –

2

El enfoque común para manejar esta situación

1) establecer qué biblioteca frasco contiene classs que falta.

2) comprobar, que este frasco presenta en su ruta de clase

+0

Me di cuenta de eso, pero no tengo idea de lo que falta, nunca en mi vida he usado la primavera y esta es una instalación de Tomcat completamente nueva. Estoy escribiendo esto porque tengo problemas para seguir el enfoque común, ya que no tengo idea de qué jar necesito. –

+0

Parece, que Gabriel señala exactamente jar en comentario a la pregunta.Lamentablemente, no puedo decir qué jar te estás perdiendo exactamente, ya que no conozco tu versión de primavera y otras dependencias. – Anton

1

Este error posiblemente proviene de las entradas que tiene en el web.xml. Por ejemplo, si tiene esto - org.springframework.web.servlet.DispatcherServlet. !! Así que cuando Tomcat se inicia, carga-on-startup intenta averiguar el contexto asm primavera, pero probablemente assemblyis despliegue faltan el frasco dependencia Maven (aunque el frasco está disponible) Para resolver este intenta establecer el siguiente

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

En mi caso, el problema estaba en 2 versiones de Java instaladas en la computadora: Java 7 y Java 8. Unisntalling Java 7 resolvió el problema.

Cuestiones relacionadas