2010-02-12 25 views
9

He reemplazado j2ee.jar con servle-api.com desde el directorio de instalación de tomcat 6.0: Y eso produce el siguiente error. Actualmente estoy tratando de descubrir la causa. ¿Cuál podría ser el problema?org.springframework.beans.factory.CannotLoadBeanClassException: No se puede encontrar la clase

Tengo un grano de la definida en un fichero de configuración: Sempedia-service.xml de la siguiente manera

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 
    <bean id="sempediaSearchService" 
     class="com.service.SempediaSearchManager" /> 


</beans> 

mi Web.xml especifica los siguientes granos:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/Sempedia-service.xml,/WEB-INF/Sempedia-persistence.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Stack Trace

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.service.SempediaSearchManager] for bean with name 'sempediaSearchService' defined in ServletContext resource [/WEB-INF/Sempedia-service.xml]; nested exception is java.lang.ClassNotFoundException: com.service.SempediaSearchManager 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    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:583) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.ClassNotFoundException: com.service.SempediaSearchManager 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138) 
    ... 24 more 

Respuesta

13

El problema es que no existe una clase llamada com.service.SempediaSearchManager en el classpath de su webapp. Las causas más probables son:

  • el nombre de clase completo es incorrecta en /WEB-INF/Sempedia-service.xml; es decir, el nombre de la clase es otra cosa,

  • la clase no está en el árbol /WEB-INF/classes directorio de su aplicación web o un archivo JAR en el directorio /WEB-INF/lib.

EDITAR: La única otra cosa que se me ocurre es que el ClassDefNotFoundException pueden ser en realidad el resultado de una carga de clases problema de inicialización anterior/estático. Compruebe sus archivos de registro para el primer traza de pila, y mire las excepciones anidadas, es decir, la cadena "causada por". [Si una carga de clase falla una vez y usted o Spring vuelven a llamar al Class.forName() por alguna razón, entonces Java no intentará cargar una segunda vez. En su lugar obtendrá una traza de pila ClassDefNotFoundException que no explica la causa real de la falla original.]

Si todavía está perplejo, debe quitar Eclipse de la imagen. Crear el archivo WAR en la forma que usted está finalmente va a desplegarlo, a continuación, desde la línea de comandos:

  1. manualmente apagado Tomcat

  2. limpiar el directorio de Tomcat webapp,

  3. copia el archivo WAR en el directorio webapp,

  4. start Tomcat.

Si eso no resuelve el problema directamente, mirar en el directorio de aplicación Web desplegada en Tomcat para verificar que la "falta" clase está en el lugar correcto.

+0

He comprobado los puntos que ha enumerado, sin embargo, el problema no se ha resuelto. Todavía tengo en cuenta que eclipse tiene un tilde X rojo contra mi "carpeta de proyecto" y "carpeta de recursos de Java". Normalmente eso se resolvería yendo ruta de compilación -> "configurar la ruta de compilación", y agregando las jarras, pero no parece haber ninguna marca roja correspondiente en la pestaña de la biblioteca en la ventana "Ruta de compilación de Java" . – Terman

+0

Cuando dice que ha comprobado los dos puntos, ¿realmente ha buscado en $ CATALINA_HOME/webapps//WEB-INF/lib para ver que el archivo JAR realmente se ha implementado? ¿Has ejecutado 'tar tvf' en el archivo JAR para comprobar que la clase realmente está ahí? –

+0

(Ooops ...'car tvf' ...) –

0

Tengo el mismo problema.Revisé mis clases/WEB-INF/basado en recomendación de Stephen:

la clase no está en WEB-INF/classes árbol de su webapp/directorio o un archivo JAR en el directorio/WEB-INF/lib .

Descubrí que tengo un archivo jar desactualizado. Reemplazarlo con el último archivo jar resolvió el problema.

1

Tuve el mismo tipo de problema. cuando revisé la carpeta build/classes no se generaron clases. Después de agregar Maven Dependency a "Deployment Web Assembly" como se indica here se ha resuelto el problema.

1

Verifique sus dependencias.

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>SchoolApp</groupId> 
    <artifactId>SchoolApp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
    <hibernate.version>4.2.0.Final</hibernate.version> 
    <mysql.connector.version>5.1.21</mysql.connector.version> 
    <spring.version>3.2.2.RELEASE</spring.version> 
    </properties> 

    <dependencies> 
    <!-- DB related dependencies --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>${mysql.connector.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.12.1.GA</version> 
    </dependency> 
    <!-- SPRING --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <!-- Spring Security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>3.1.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.1.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>3.1.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>3.1.3.RELEASE</version> 
    </dependency> 
    <!-- CGLIB is required to process @Configuration classes --> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <!-- Servlet API and JSTL --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test-mvc</artifactId> 
     <version>1.0.0.M1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <repositories> 
    <repository> 
     <id>spring-maven-milestone</id> 
     <name>Spring Maven Milestone Repository</name> 
     <url>http://maven.springframework.org/milestone</url> 
    </repository> 
    </repositories> 

    <build> 
    <finalName>spr-mvc-hib</finalName> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
0

recientemente experimenté este problema cuando estaba tratando de construir y de repente la batería de la computadora portátil se quedó sin carga. Acabo de eliminar todos los servidores del eclipse y luego restaurarlo. después de hacer eso, reconstruí el archivo war y funcionó.

0

acaba de salir de esto aquí para futuros visitantes:

En mi caso el directorio/WEB-INF/classes faltaba. Si está utilizando Eclipse, asegúrese de que el .settings/org.eclipse.wst.common.component sea correcto (Implementación del ensamblaje en la configuración del proyecto).

En mi caso que faltaba

<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> 
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/> 

Este archivo es también una fuente común de errores como se ha mencionado por Anuj (dependencias faltantes de otros proyectos).

De lo contrario, con suerte las otras respuestas (o la pestaña "Problemas") le ayudarán.

2

Tengo el mismo error y la causa era el directorio:

T: ..... WEB \ WebRoot \ WEB-INF \ classes \ com \ yourcompany \ cc \ DAO

fue corrompida (directorio o archivo no se puede leer o dañado) .. resuelven con

  • cambiar el nombre de las clases directorio WEB-INF \ como WEB-INF \ classes_old
  • Menú Proyecto de Eclipse -> Limpiar (para recrear directorios)
  • volver a desplegar -> reiniciar el servidor.
+0

Perfecto !! Magnífico. –

Cuestiones relacionadas