`
fishergay
  • 浏览: 33135 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

完美解决javaee5.jar和Hibernate-jpa2.0.jar冲突问题

 
阅读更多
    因为javaee.jar(集成的jpa注解版本) 跟hibernate3.5 以上的版本的Hibernate-jpa-2.0-api-1.0..x.jar 会有冲突会报java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 之类的错误
报此错解决办法:

推荐使用第三种方法, 本项目采用第三种方法解决。

第一种办法:
     删除MyEclipse中Java EE 5 Libraries(javaee.jar)中persitence包下的类使用。
(javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突.
用RAR打开javaee.jar,删除javax下的persitence目录 , 删除前注意备份) 该方法删除可能会对其他项目造成影响,不推荐使用。

第二种办法:
     如果是MyEclipse开发工具,不使用Java EE 5 Libraries)这个library,可以在项目中把Java EE 5 Libraries这个library的所有jar加入,
(javaee.jar, jsf-api.jar, jsf-impl.jar, jstl-1.2), 并且删除javaee.jar文件javax下的persitence目录., 如果开发工具是eclipse(没有使用到相关内容可以把这个4个jar包删除),
本方法可以解决冲突,但是部署的时候javaee.jar里面的servlet可能会跟tomcat servlet.jar会冲突,需要把项目地下的javaee.jar删除.

第三种方法:
     不使用Java EE 5 Libraries)这个library, 编译servlet报错, 需要引入tomcat lib目录底下的jsp-api.jar和servlet-aip.jar 两个jar文件. 
部署:因为tomcat 包含了这2个jar文件,再部署过去就会报错,
解决如下:
     如果开发工具是MyEclipse, 直接在MyEclipse项目部署到tomcat 会把jsp-api.jar和servlet-aip.jar两个jar也部署过去, 需要删除. 但是Redeploy,还是会自动部署,每次删麻烦,可以使用
<Context docBase="F:\workspace\project\SSHFrameworkTemplate\SSH" path="/SSH" caseSensitive="false"/> 部署, 没有问题。
如果不想用虚拟目录的方式,可以在Myeclipse当中添加一个User Library(Window-->Preferences-->Java-->Build Path --> User library) 把jsp-api.jar和servlet-aip.jar 两个jar文件加入进去,一定要把下面system library 打钩,
然后在项目引入这个library编译, 这样再部署的时候就不会把这2个jar文件部署到tomcat了, 推荐使用此方法。

 

 

  • 大小: 18.3 KB
0
6
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics