今天接到通知需要给某个地方上系统,对方的环境以及搭建好了weblogic12c ,本地开发测试是11g 10g和tomcat,所以需要拿到12c环境上测试一些。 果不其然报错了
HHH000142: java.lang.ClassCastException: Xxxxxxxxxxxxxxxxxxxxxxxxx.Org_$$_javassist_111 cannot be cast to javassist.util.proxy.Proxy
经过一番度娘得出两个答案
- 通过myeclipse整合ssh框架时加入的Struts2 和 hibernate 都自带javassist jar包所以报错,删掉其中一个就行
- 得到的第二个是第一个的另外一种解决办法,取消hibernate的懒加载(治标不治本啊)
- 考虑hibernate和javassist的版本问题(猜想)
显然这个并不是我这出的原因:此系统在11g 10g tomcat都是没问题的,就只有断定是12c的运行环境和其他有不一样。通过报错初步确定出问题的是hibernate使用javassist动态代理出错(因为报错的是一个实体类),通过检查本地环境。
hibernate版本为5.0.7 javassist版本3.18.1 。 通过mvnrepository 网查看 javassist的版本发现已经更新多个版本。 尝试更新了一下javassist的版本为测试完无问题,11g 12c tomcat都测试了一次都没问题。
具体兼容性原因还不清楚,待我有时间跟一下源码
总结:weblogic因为集成了好多东西,所以环境比较杂。第二个比较普遍的问题是jar包冲突在 weblogic.xml里面配置优先加载应用中的jar包