異常:
Error creating bean with name 'sessionFactoryWrite' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1122) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) Truncated. see log file for complete stacktrace 使用spring + hibernate :
本地tomcat下跑沒有異常,UAT環境忽然出現如下以上異常,主要問題是: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 出現這種異常通常是由於Myeclipse的javaee.jar 版本較低,與Hibernate等自帶的JPA出現了沖突。
無法初始化hibernate,sessionfactory。
這顯然是環境問題。
解決方案:
配置weblogic.xml,添加優先加載jar包:
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app> <container-descriptor> <!--<prefer-web-inf-classes>true</prefer-web-inf-classes> --> <prefer-application-packages> <package-name>org.apache.commons.lang.*</package-name> <package-name>antlr.*</package-name> <package-name>org.hibernate.*</package-name> <package-name>javax.persistence.*</package-name> <package-name>org.apache.cxf.*</package-name> </prefer-application-packages> </container-descriptor> <context-root>/</context-root> <session-descriptor> <persistent-store-type>replicated_if_clustered</persistent-store-type> <cookie-name>JSESSIONID-vehicle</cookie-name> </session-descriptor> </weblogic-web-app>