0

SpringMVCアプリをHibernateと統合しています。@OneToManyアノテーションを使用するまでは、すべて問題ありませんでした...次のエラーが発生します。

Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4035)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3989)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1398)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 81 more

これが私のWEB-INF/libの内容です。

aopalliance-1.0.jar
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-digester-2.1.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
h2-1.3.164.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.9.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.12.1.GA.jar
log4j-1.2.16.jar
slf4j-api-1.6.4.jar
slf4j-log4j12-1.6.4.jar
spring-aop-3.1.1.RELEASE.jar
spring-asm-3.1.1.RELEASE.jar
spring-beans-3.1.1.RELEASE.jar
spring-context-3.1.1.RELEASE.jar
spring-core-3.1.1.RELEASE.jar
spring-expression-3.1.1.RELEASE.jar
spring-hibernate3-2.0.8.jar
spring-jdbc-3.1.1.RELEASE.jar
spring-orm-3.1.1.RELEASE.jar
spring-tx-3.1.1.RELEASE.jar
spring-web-3.1.1.RELEASE.jar
spring-webmvc-3.1.1.RELEASE.jar
spring-webmvc-3.1.1.RELEASE-sources.jar
tiles-api-2.2.2.jar
tiles-core-2.2.2.jar
tiles-jsp-2.2.2.jar
tiles-servlet-2.2.2.jar
tiles-template-2.2.2.jar

一部の人がejb3-persitence.jarの削除を支援したのを見ましたが、私のクラスパスにはそのjarが含まれていません。このアプリをJBossやGlassfishな​​どの他のアプリケーションサーバーで実行すれば、何でも問題ありません。

4

1 に答える 1

2

そのクラスはいくつかの jar ファイルで提供されるため、アプリケーションが正しいものを使用していることを確認する必要があります。

最初に、それが使用しているものをワークアウトする必要があります。WEB-INF/lib フォルダーから削除してみてください。それでも同じエラーが発生する場合は、別の場所から読み込まれていることを意味します。

また、何が起こるかを確認するためのテストとして、$TOMCAT_HOME/lib にコピーしてみてください。

Eclipse を使用している場合は、javaee-api-5 にもこれらのクラスが含まれているため、使用している JRE/JDK を試して確認してください。また、Tomcat によって読み込まれるときに javaee-api が含まれていないことを確認する価値がある場合もあります。

hibernate-jpa jar ファイルと競合する可能性のある jar ファイルの例を以下に示します (バージョン番号が異なる場合があります)。

 persistence.jar
 toplink-essentials.jar
 ejb3-persistence-1.0.1.GA.jar
 ejb3-persistence-1.0.2.GA.jar
 ejb3-persistence-3.3.2.Beta1.jar
 geronimo-jpa_1.0_spec-1.1.2.jar
 geronimo-jpa_3.0_spec-1.0.jar
 geronimo-jpa_3.0_spec-1.1.1.jar
 geronimo-jpa_3.0_spec-1.1.jar
 persistence-api-1.0.jar
 geronimo-jpa_2.0_spec-1.0-PFD2.jar
 geronimo-jpa_3.0_spec-1.0-M1.jar
 glassfish-persistence-api-b32g.jar
 javaee-api-5.0-1.jar
 javaee-api-5.0-2.jar
 openjpa-all-2.0.0-M3.jar
 openejb-itests-standalone-client-3.0.1.jar
 openejb-itests-standalone-client-3.0.jar
 openejb-itests-standalone-client-3.1.1.jar
 openejb-itests-standalone-client-3.1.jar

この問題は、競合がどこにあるかを正確に解決するためにさまざまな状況を試す必要がある jar ファイルとの競合によって引き起こされます。

于 2012-03-03T16:07:16.880 に答える