2011-06-12 22 views
33

Obtengo la siguiente excepción cuando intento iniciar Tomcat a través de Eclipse (haciendo clic con el botón secundario en Proyecto, Ejecutar como -> Ejecutar en servidor).Web de Tomcat & Spring - Clase no encontrada Excepción 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 

Estoy construyendo mi proyecto utilizando Maven (m2eclipse). He agregado las dependencias necesarias a las bibliotecas de Spring, y puedo ver el archivo spring-web.jar en el directorio lib del artefacto final (que contiene la clase). Cuando despliegue la aplicación fuera de IDE, funciona bien.

Cualquier sugerencia de por qué sucede esto sería muy apreciada.

+1

Si la información que proporcionó es correcta, se dice que la El despliegue de Tomcat dentro de Eclipse no sabe acerca de ese JAR.El hecho de que funcione bien fuera del IDE dice que tienes el WAR correcto, pero Eclipse se refiere a otra cosa. Busque la versión explotada de Eclipse para ver dónde falta. – duffymo

+0

¿Dónde puedo encontrar la versión explotada en eclipse? –

Respuesta

78

Me enfrenté al mismo problema hace unos días con m2eclipse (sin adición de integración de WTP disponible a través de m2eclipse-extras) en Eclipse Indigo. Creé un Módulo web Maven y agregué manualmente la faceta Dynamic Web Module. Cuando lo implementé en Eclipse WST Tomcat Server, parecía que mis dependencias Maven no se están enviando al servidor cuando se publica el proyecto.

La solución fue simple. Haga clic derecho en su proyecto web en el Explorador de proyectos -> seleccione 'Propiedades'. En Propiedades del proyecto, seleccione 'Ensamblaje de despliegue'.

La página de propiedades de Implementación de despliegue muestra el contenido que se publicará como un artefacto ensamblado por Eclipse en el servidor. Debes decirle a Eclipse que quieres que se publiquen todas tus dependencias de Maven también.

Para hacer eso, haga clic en el botón 'Agregar', luego seleccione 'Entradas de ruta de compilación de Java'. Haga clic en Siguiente y seleccione Dependencias de Maven. Esto publicará los archivos JAR de dependencia de Maven en la carpeta lib cuando Eclipse publique su proyecto en el servidor WST.

Este enfoque funcionó para mí.

+0

Me preguntaba dónde estaba esa interfaz de usuario en Eclipse: solía ser dependencias de módulos J2EE o algo así, ¡gracias! –

+1

infierno sí! para todos los que vienen aquí. ¡Esta es la respuesta correcta! – Gleeb

+2

Esto no funciona para mí. Tengo un proyecto web A que depende de B a través de pom.xml; "Dependencias de Maven" ya figura en el Ensamblaje de despliegue, como lo es B. Nota: la ruta de despliegue para B es "WEB-INF/lib/B-0.1.0-SNAPSHOT.jar", y no cambia dependiendo de si B está abierto en Eclipse o no. La ruta de compilación de Eclipse cambia correctamente (ya sea el proyecto de Eclipse o el contenedor en mi repo) para reflejar si el proyecto está abierto o no. Estoy usando SpringSource Tool Suite 2.9.2.RELEASE. Todavía obtengo una ClassNotFoundException en tiempo de ejecución a pesar de que la clase se resuelve bien en Eclipse. Perplejo. – djb

4

La manera más fácil de decir lo que Eclipse pondrá en su archivo de guerra para las implementaciones del servidor es hacer clic con el botón derecho -> Exportar -> archivo WAR. A continuación, puede descomprimir esto y ver lo que hay dentro.

Si usted abre ".settings/org.eclipse.wst.common.component" debería ver la definición de la aplicación web herramientas web, y ver algo como:

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

En su trayectoria de la estructura de Eclipse, asegúrese de que "Dependencias Maven" aparezca en Bibliotecas. Las últimas versiones del plugin m2eclipse y WST deberían recoger automáticamente las dependencias de Maven y colocarlas en WEB-INF/lib dentro de su archivo war.

Por último, pero no menos importante, es posible que desee considerar la obtención de la última copia de SpringSource Tool Suite (STS). STS tiene una serie de buenas características, incluida la agrupación de los últimos m2eclipse y WST. Todavía puede usarlo con Tomcat (o su versión de Tomcat), y tiene algunos arquetipos y tutoriales para que una aplicación web funcione rápidamente.

¡Disfrútalo!

0

Añadir estos archivos (lo que liberar que se esté utilizando) a

apache-tomcat-8.0.35\lib 

carpeta (y reiniciar el servidor):

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