2012-03-02 5 views
0

나는 Hibernate와 통합 된 Spring MVC App을 가지고있다. 내 WEB-INF/lib 디렉토리 내용을 여기에Tomcat이있는 Geronimo에서 JPA 2

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 

것 :

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 

나는 어떤 사람들을 위해 도움 것을보고 모든 것은 내가 @OneToMany 주석을 사용할 때까지 ... 나는 다음과 같은 오류가있어 확인했다 ejb3-persitence.jar 제거하지만 내 클래스 경로에는 해당 항아리가 포함되어 있지 않습니다. JBoss 또는 Glassfish와 같은 다른 응용 프로그램 서버에서이 응용 프로그램을 실행하면 문제가 없습니다.

+0

'OneToMany' 관계에 대한 코드를 게시하십시오. – beerbajay

+2

Geronimo는 자체 jar 파일 중 하나에 JPA 1.0 클래스가 있어야하며,이 클래스는 WEB-INF/lib에있는 JPA 2.0 클래스 대신로드됩니다. –

+0

예, 알고 있습니다 만 어떻게 해결할 수 있습니까? WEB-INF/lib 라이브러리의 우선 순위가 더 높다고 생각했습니다. – bontade

답변

2

해당 클래스는 여러 jar 파일로 제공되므로 응용 프로그램이 올바른 jar 파일을 사용하는지 확인해야합니다.

먼저 운동을 수행해야합니다. 시도한 후 WEB-INF/lib 폴더에서 제거하고 여전히 동일한 오류가 발생하면 다른 곳에서로드되었음을 의미합니다.

또한 테스트를 위해 $ TOMCAT_HOME/lib에 복사하여 시도하십시오.

Eclipse를 사용하는 경우 javaee-api-5에도 이러한 클래스가 포함되어 있으므로 사용중인 JRE/JDK를 확인하십시오. Tomcat이 javaee-api를로드 할 때 javaee-api가 포함되지 않도록 할 가치가 있습니다. 당신의 최대 절전 모드에서 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 파일과의 충돌로 인해 발생하면 갈등이있는 곳에서 정확하게 다른 상황을 시도해 볼 필요가 있습니다.

+0

사실, 문제가있는 라이브러리를 발견했습니다./저장소/org/아파치/제로니모/사양/제로니모 - jpa_1.0_spec/1.1.2/제로니모 - jpa_1.0_spec - 1.1.2.jar'. 보시다시피 라이브러리가 JPA 2와 호환되지 않습니다. Geronimo 업그레이드보다 합리적인 솔루션이 더 나은 것 같습니다. – bontade

+0

Geronimo (Jetty)에서이 문제에 대한 해결 방법을 찾았습니다. Geronimo와 Tomcat의 솔루션은 동일합니다. 여기에 [솔루션] (http://stackoverflow.com/a/9642172/420652) – bontade

+0

좋습니다. 바라건대 다른 사람도이 기능을 유용하게 사용할 수 있기를 바랍니다. – ziggy

관련 문제