java cacheprovider_CacheProvider的异常NoClassDefFoundError

问题

我是Spring和hibernate的新手,所以我试图实现一些基于Spring 3 hibernate 4的简单Web应用程序,同时我启动tomcat我有这个异常:

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)

我发现这个类在hibernate 3中处于hibernate核心,但是我没有在hibernate 4中找到它。

我的context.xml用于持久化的部分:

org.hibernate.dialect.Oracle10gDialect

请帮我弄清楚它为什么要加载CacheProvider,因为我在context.xml中没有任何设置,我必须在我的项目中添加哪个jar。谢谢!

#1 热门回答(184 赞)

将AnnotationSessionFactoryBean更改为org.springframework.orm.hibernate4.LocalSessionFactoryBean(Hibernate 4),你就可以了。 AnnotationSessionFactoryBean已替换为LocalSessionFactoryBean,因为它现在进行类路径扫描。

#2 热门回答(11 赞)

这可能是由于Hibernate 4中引入的更改与Spring对Hibernate的支持不兼容。 Thisissue关于添加单独的软件包以支持hibernate 4.你将需要spring 3.1。如果你不需要4中引入的任何特定功能,另一个选择是坚持休眠3。

#3 热门回答(8 赞)

将AnnotationSessionFactoryBean更新为hibernate4非常完美。还要确保你的transactionManager也指向hibernate4,

class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

org.hibernate.dialect.MySQLDialect

class="org.springframework.orm.hibernate4.HibernateTransactionManager">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值