java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 两种解决方案
2014-10-30 15:06
381 查看
java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
两种解决方案
这个异常是在我们配置spring + hibernate annotations的@OneToMany 一对多双向关联后出现的异常。通常在使用注解配置这个关联关系的时候极易出现这种包的冲突问题。不过减少了Hibernate映射文件,这也相应的付出一定的代价。
说明:
1.在hibernate3.5之前,我们运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:ejb3-persistence.jar
则javax.persistence.OneToMany.class就在ejb3-persistence.jar中。
2.在hibernate3.5及其以后,运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:hibernate-jpa-2.0-XXX.jar
hibernate-jpa-2.0-XXX.jar中已将包含了ejb3-persistence.jar所有类库和其他一些扩展,固然javax.persistence.OneToMany.class也就在hibernate-jpa-2.0-XXX.jar中了。所以当我们从3.5以下版本上级到3.5以上版本时,很容易出现不知道哪些jar包该保留哪些该删掉,因而两个jar包同时存在,出现了这个冲突异常。
3.其实持久化并不是只有ejb3-persistence.jar和hibernate-jpa-2.0-XXX.jar提供,Java EE(注意:是Java EE,并不是J2ee,J2ee在1.4以后就命名为Java EE,而且新增了很多类库)核心类库同样也提供了javax.persistence类库,当你的项目hibernate导入的jar都正常后仍旧出现冲突异常,那么你就要考虑是不是你引入的其他类库导致了这个异常。比如Java EE5及其以后的核心类库。
我不小心依赖了hibernate-jpa-2.0-api-1.0.1.Final.jar和ejb3-persistence包,导致了这个问题,删除掉去ejb3-persistence依赖即可。
以上转自:http://symphony.b3log.org/article/1407488571351
在增加项目依赖的时候需要我们注意依赖包是否相互冲突,网上的主流方法是:
1.删除建立web项目时自带的Javaee.jar,可是这样带来的后果是 httpServletRequest 等组件无法使用。 (我曾经这样干过,),然后我将项目用的javaee5的包换掉,装入javaee6,但是在项目开始没过几天所有的依赖包都变成黑色的那种了,也就是在编译的过程中出现了冲突(因为是在myeclipse8.6上开发的,javaee6可能水土不服),后来改成myeclipse10了,10则自带javaee6的并且改了一些5与Hibernate框架包的另外一些异常。
2.使用服务器是tomcat,当发布的时候,自然日志会打一大堆,
出现sessionFactory初始化失败,然后告诉你没有这个方法,网上说的方法就是将myeclipse中的D:\myeclipse10\installMyeclipse10\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.5.0.me201207171805\data\libraryset下有EE_5和EE_6两个文件夹,将EE_5下的javaee.jar使用解压工具打开,(我使用的是360解压,)然后删除persistence文件夹 ,而在EE_6下的文件也有一个javax.persistence.jar的文件,将其删除。
但是要说明的是我按照2的方法删除后依然不好使。这个方法在很多论坛和其他博客中都出现了,不过在这里还是不好使,项目启动依然报错。于是在文章开始的说明处得到答案,将EE_6下的javax.persistence.jar还原,转而ejb3-persistence依赖,然后发布项目,结果好使了。
步骤:在web项目下的lib目录中有该依赖则删除,或者进入项目所在文件夹,将该依赖删除。
在这里综述上述两种方法,有遇到此异常的可以借鉴一下。
两种解决方案
这个异常是在我们配置spring + hibernate annotations的@OneToMany 一对多双向关联后出现的异常。通常在使用注解配置这个关联关系的时候极易出现这种包的冲突问题。不过减少了Hibernate映射文件,这也相应的付出一定的代价。
说明:
1.在hibernate3.5之前,我们运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:ejb3-persistence.jar
则javax.persistence.OneToMany.class就在ejb3-persistence.jar中。
2.在hibernate3.5及其以后,运用hibernate开发J2EE项目通常会引以下几个jar包:
hibernate核心包:hibernate3.jar
持久化:hibernate-jpa-2.0-XXX.jar
hibernate-jpa-2.0-XXX.jar中已将包含了ejb3-persistence.jar所有类库和其他一些扩展,固然javax.persistence.OneToMany.class也就在hibernate-jpa-2.0-XXX.jar中了。所以当我们从3.5以下版本上级到3.5以上版本时,很容易出现不知道哪些jar包该保留哪些该删掉,因而两个jar包同时存在,出现了这个冲突异常。
3.其实持久化并不是只有ejb3-persistence.jar和hibernate-jpa-2.0-XXX.jar提供,Java EE(注意:是Java EE,并不是J2ee,J2ee在1.4以后就命名为Java EE,而且新增了很多类库)核心类库同样也提供了javax.persistence类库,当你的项目hibernate导入的jar都正常后仍旧出现冲突异常,那么你就要考虑是不是你引入的其他类库导致了这个异常。比如Java EE5及其以后的核心类库。
我不小心依赖了hibernate-jpa-2.0-api-1.0.1.Final.jar和ejb3-persistence包,导致了这个问题,删除掉去ejb3-persistence依赖即可。
以上转自:http://symphony.b3log.org/article/1407488571351
在增加项目依赖的时候需要我们注意依赖包是否相互冲突,网上的主流方法是:
1.删除建立web项目时自带的Javaee.jar,可是这样带来的后果是 httpServletRequest 等组件无法使用。 (我曾经这样干过,),然后我将项目用的javaee5的包换掉,装入javaee6,但是在项目开始没过几天所有的依赖包都变成黑色的那种了,也就是在编译的过程中出现了冲突(因为是在myeclipse8.6上开发的,javaee6可能水土不服),后来改成myeclipse10了,10则自带javaee6的并且改了一些5与Hibernate框架包的另外一些异常。
2.使用服务器是tomcat,当发布的时候,自然日志会打一大堆,
出现sessionFactory初始化失败,然后告诉你没有这个方法,网上说的方法就是将myeclipse中的D:\myeclipse10\installMyeclipse10\Common\plugins\com.genuitec.eclipse.j2eedt.core_10.5.0.me201207171805\data\libraryset下有EE_5和EE_6两个文件夹,将EE_5下的javaee.jar使用解压工具打开,(我使用的是360解压,)然后删除persistence文件夹 ,而在EE_6下的文件也有一个javax.persistence.jar的文件,将其删除。
但是要说明的是我按照2的方法删除后依然不好使。这个方法在很多论坛和其他博客中都出现了,不过在这里还是不好使,项目启动依然报错。于是在文章开始的说明处得到答案,将EE_6下的javax.persistence.jar还原,转而ejb3-persistence依赖,然后发布项目,结果好使了。
步骤:在web项目下的lib目录中有该依赖则删除,或者进入项目所在文件夹,将该依赖删除。
在这里综述上述两种方法,有遇到此异常的可以借鉴一下。
相关文章推荐
- Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z解决方案
- 使用Hibernate框架,对异常java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z的处理
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z异常
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z OneToOne解决
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z异常
- OneToOne注解报异常:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- 报此错解决办法:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()ZZ
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- WebLogic下开发Hibernate问题 java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()Z
- 报此错错解决办法:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z