项目中使用到了Hibernate 3.6,在PO类中使用了@OneToMany注解
在Tomcat上部署运行正常,但是部署到webSphere7上出现问题,报错如下:
Caused by: java.lang.NoSuchMethodError: javax/persistence/OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
... 118 more
这是未能正常加载hibernate-jpa-2.0-api-1.0.0.Final.jar这个jar导致的
因为WebSphere7的类加载路径用有同样的类实现导致jar包冲突,且加载在本包内部jar包之前,所以可以将hibernate-jpa-2.0-api-1.0.0.Final.jar复制到WAS7_FOLDER\AppServer\java\jre\lib\ext下,并重启was即可解决该问题
注意:不推荐删掉was中的jar包,可能导致其他问题!

本文介绍了解决在WebSphere7环境下部署使用Hibernate 3.6的应用时遇到的类加载冲突问题。主要原因是WebSphere7加载了与应用中hibernate-jpa-2.0-api-1.0.0.Final.jar中的@OneToMany.orphanRemoval方法不兼容的类。解决方案是将此jar包复制到特定目录并重启WebSphere。

被折叠的 条评论
为什么被折叠?



