93 votes

Exception NoClassDefFoundError pour CacheProvider

Je suis un peu nouveau dans Spring et hibernate donc je suis en train de mettre en œuvre une simple application web basée sur Spring 3 + hibernate 4 alors je commence tomcat, j'ai cette exception:

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)

J'ai trouvé que cette classe était en veille prolongée-core pour hibernate 3, mais je n'ai pas trouvé dans hibernate 4.

La partie de mon context.xml pour la persistance:

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

Merci de m'aider à comprendre pourquoi il essaie de charger CashProvider parce que je n'ai pas de paramètres pour que, dans context.xml et jar-je ajouter dans mon projet. Merci!

184voto

Aaron Douglas Points 2224

Modifier votre AnnotationSessionFactoryBean à `` (4 Hibernate) et vous serez prêt à partir. Le AnnotationSessionFactoryBean a été remplacé par le LocalSessionFactoryBean, comme il de catégorie chemin analyse maintenant.

11voto

gkamal Points 9679

Cela pourrait être due à des changements introduits dans la mise en veille prolongée 4 qui ne sont pas compatibles avec le support de ressort de mise en veille prolongée. Cette question de pourparlers sur l’ajout d’un package distinct pour soutenir hibernate 4. Vous avez besoin jailliront 3.1 pour cela. L’autre option est de s’en tenir pour hiberner 3 Si vous n’avez pas besoin de toute fonctionnalité spécifique introduite dans 4.

8voto

Vishal Jagtap Points 156

mise à jour AnnotationSessionFactoryBean vers hibernate4 fonctionne parfaitement. Assurez-vous également que votre transactionManager souligne également les hibernate4,

0voto

John Lockwood Points 1545

Un problème très simple qui fera la même erreur est simplement d’avoir une incohérence entre la version de la mise en veille prolongée dans le pom (4.something) et la version définie dans la configuration spring.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X