setlookandfeel plaf nimbuslookandfeel lookandfeelinfo lookandfeel look jtattoo info how for feel change and java hibernate spring exception web-applications

plaf - lookandfeel java windows



Excepción NoClassDefFoundError para CacheProvider (4)

Cambia tu AnnotationSessionFactoryBean a org.springframework.orm.hibernate4.LocalSessionFactoryBean (Hibernate 4) y estarás listo para continuar. El AnnotationSessionFactoryBean se reemplazó con el LocalSessionFactoryBean, ya que ahora analiza el camino de clase.

Soy algo nuevo en Spring e hibernate, así que estoy tratando de implementar alguna aplicación web simple basada en Spring 3 + hibernate 4 mientras comienzo tomcat. Tengo esta excepción:

java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethods(Class.java:1791) ... Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.CacheProvider at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

Descubrí que esta clase estaba en hibernate-core para hibernate 3 pero no la encontré en hibernate 4.

La parte de mi context.xml para la persistencia:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> <property name="url" value="jdbc:oracle:thin:@IP_Address:SID"/> <property name="username" value="xxx"/> <property name="password" value="xxx"/> <property name="initialSize" value="5"/> <property name="maxActive" value="20"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan" value="com.huawei.vms.user"/> <property name="hibernateProperties"> <props> <prop key="dialect">org.hibernate.dialect.Oracle10gDialect</prop> </props> </property> </bean>

Ayúdame a descubrir por qué está intentando cargar CacheProvider porque no tengo ninguna configuración para eso en context.xml y qué jar debo agregar a mi proyecto. ¡Gracias!


Esto podría deberse a cambios introducidos en Hibernate 4 que no son compatibles con el soporte de Spring para Hibernate. Este problema se refiere a agregar paquetes por separado para admitir hibernación 4. Necesitarás la primavera 3.1 para esto. La otra opción es mantener el hibernate 3 si no necesita ninguna característica específica introducida en 4.


Un problema realmente simple que causará el mismo error es simplemente tener una falta de coincidencia entre la versión de hibernación en el pom (4. algo) y la versión especificada en la configuración de primavera.


la actualización de AnnotationSessionFactoryBean para hibernar4 funciona perfectamente. También asegúrese de que su transactionManager también apunte a hibernate4,

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="packagesToScan" value="PACKAGE_NAME"></property> <property name="hibernateProperties"> <props> <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>