升级spring和hibernate到4遇到的问题总结
来源:互联网 发布:云南大学软件学院图片 编辑:程序博客网 时间:2024/05/29 02:19
背景:spring从3.0.5升级到4.1.5; hibernate从3.3.2升级到4.3.7.
错误1:Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
之前使用了spring-asm包,升级后发现asm最新的包是3.1.4,没有4.1.5的版本,这个错误就是使用3.1.4的版本引起的,后来查资料发现,原来spring3.2以后不再需要asm了,它被合并到spring-core里面了。所以删除asm的包后一切就正常了
错误2:java.lang.NoClassDefFoundError: [Lorg/hibernate/eng,
这是因为使用了hibernate4,在spring的配置文件里面,所有用hibernate3的都要改成用hibernate4
比如:<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
错误3:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
这是我配置了openSessionInView,查了下web.xml发现还是hibernate3, 所以要搜索一下所有用hibernate3的地方改成hibernate4就好了
错误4:
java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder
原因是使用了org.springframework.orm.hibernate3.support.HibernateDaoSupport, 应该改成
org.springframework.orm.hibernate4.support.HibernateDaoSupport
同时新的HibernateDaoSupport不再提供getSession方法,替代方法是currentSession
错误5:查询数据的时候出现这个错误
Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/Proxy
发现之前使用的javassist版本是3.15.0-GA, 的确没有这个类,升级到3.19.0-GA解决
错误6:Invocation of init method failed; nested exception is java.lang.ClassCastException: org.hibernate.annotations.common.reflection.java.JavaReflectionManager cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector
检查发现后通过maven依赖有两个hibernate-commons-annotations.jar
一个是3.1.0.GA.jar,另一个是4.0.5.Final.jar
原来hibernate-annotations-3.4.0.GA.jar把上面的3.1.0.GA依赖进来了,而hibernate-core-4.3.7.Final.jar把上面的4.0.5.Final依赖进来了。
两个包有冲突。
把hibernate-annotations-3.4.0.GA.jar从pom.xml删除后,就可以了,升级后不需要这个包了。
问题7:java.lang.ClassCastException: com.sofree.common.model.DmBylb_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
在eclipse里面跑没有问题,放到tomcat下面跑才出现这个问题,经检查发现在lib下面有两个javassist的包,一个是
javassist-3.19.0-GA.jar, 另一个是javassist-3.11.0.GA.jar
javassist-3.19.0-GA.jar 的group id是org.javassist,hibernate-core-4.3.7.Final 依赖这个包
javassist-3.11.0.GA.jar 的group id 是javassist , struts2-core依赖这个包
所以maven没有处理掉11这个版本。要把11这个版本排除掉,问题解决。
- 升级spring和hibernate到4遇到的问题总结
- 关于spring升级到4.3.12 hibernate升级到4.3 遇到的一些问题和解决方法
- spring和hibernate整合遇到的问题
- 升级xcode3到xcode4遇到的一些问题 和 解决方法
- Struts2.0.14升级到2.3.4遇到的一些问题
- vs2003升级到vs2005遇到的问题
- xcode升级到4.5遇到的问题
- 升级到Xcode8遇到的问题
- OpenSSH升级到7.0+遇到的问题
- STM32 IAP升级遇到的问题总结
- Spring MVC+hibernate+Spring的框架搭建中遇到的问题总结
- Asp.net1.1升级到2.0遇到的一些问题总结
- Ubuntu 11.04 内核升级到12.10版本遇到的问题总结
- CocoaChina(总结)升级到xcode8遇到的问题及解决方案
- 个人总结:AS升级到3.0后遇到的问题及解决方法
- STM32IAP升级-----编写IAP升级遇到的问题总结
- STM32IAP升级-----编写IAP升级遇到的问题总结
- STM32IAP升级-----编写IAP升级遇到的问题总结
- C++静态成员变量和静态成员函数
- 在SYSTEM权限下创建用户进程方法
- 23种设计模式之原型模式
- Ubuntu 14.04~14.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
- jsp文件头部出现红叉解决方法The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- 升级spring和hibernate到4遇到的问题总结
- Hadoop——重命名文件
- HTML5 Camera(摄像头) 和 Video(视频)控制
- 5.6.2 重写父类的方法
- android 一个SharedPreferences用法的例子
- 23种设计模式之模版方法模式
- Java基础(20,21)IO流
- 使用zookeeper实现服务路由和负载均衡
- 23种设计模式之中介者模式