javax.persistence.Table.indexes () [Ljavax / persistence / Index의 NoSuchMethodError
나는 플레이 Framework 응용 프로그램을하고 난 되었다 (메이븐 의존성 관리를 통해 검색되는) 최대 절전 모드 4.2.5.Final를 사용. Hibernate 4.3.0.Final로 업그레이드하고 애플리케이션을 성공적으로 다시 컴파일하고 실행하기로 결정했습니다.
아래 예외가 있는데 그 이유를 알 수 없었습니다. 4.2.5로 다시 다운 그레이드했는데이 문제가 발생하지 않았습니다. 그런 다음 4.2.5 이후의 Final 릴리스마다 Hibernate를 업그레이드하려고 시도했습니다. 즉, 4.2.5.Final에서 4.2.6.Final, 4.2.7.Final, 4.2.8.Final, 4.3.Final로 이동했습니다. 4.3.0.Final로 업그레이드 할 때까지 문제가 발생하지 않습니다.
Java 버전 정보
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
그리고 예외 :
play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.1]
at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
나는 같은 문제에 부딪쳤다. 여기서 질문은 play-java-jpa 아티팩트 (build.sbt 파일의 javaJpa 키)가 spec의 다른 버전에 의존한다는 것 (version 2.0 -> "org.hibernate.javax.persistence" % "hibernate-jpa-2.0-api" % "1.0.1.Final")
입니다.
hibernate-entitymanager 4.3을 추가하면 새로운 사양 (2.1)과 entitymanager에 대한 다른 팩토리 공급자가 제공됩니다. 기본적으로 클래스 경로에 전이 종속성으로 두 jar가 모두 포함되었습니다.
build.sbt 파일을 이와 같이 편집하면 play가 최신 API 종속성에 대한 새 버전의 jpa 플러그인을 릴리스 할 때까지 일시적으로 문제를 해결합니다.
libraryDependencies ++= Seq(
javaJdbc,
javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final"
)
이것은입니다 play 2.2.x
. 이전 버전에서는 빌드 파일에 약간의 차이가있었습니다.
Hibernate 4.3은 JPA 2.1 사양 (Java EE 7의 일부)을 구현 한 첫 번째 버전입니다. 따라서 JPA 2.0 라이브러리가 아닌 클래스 경로에 JPA 2.1 라이브러리가 필요합니다. 이것이 바로이 예외가 발생하는 이유입니다. Table.indexes ()는 JPA 2.1에 도입 된 Table의 새로운 속성입니다.
Hibernate JPA를 2.1로 업데이트하고 작동합니다.
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
클래스 경로에 두 가지 버전의 hibernate-jpa-api가 있습니다. 실행을 확인하려면 :
mvn dependency:tree >dep.txt
그런 다음 hibernate-jpa-2.0-api 및 hibernate-jpa-2.1-api가 있는지 검색하십시오. 그리고 초과하는 것을 제외하십시오.
jboss7 / modules / javax / persistence / api / main에있는 JPA api jar 파일을 'hibernate-jpa-2.1-api'로 바꾸는 것만으로 문제를 해결할 수 있습니다. 또한 디렉토리에서 module.xml을 업데이트합니다.
오류 : java.lang.NoSuchMethodError : javax.persistence.JoinTable.indexes () [Ljavax / persistence / Index;
The only thing that solved my problem was removing the following dependency in pom.xml: <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency>
And replace it for:
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
Hope it helps someone.
i have experienced same issue in my spring boot application. after removing manually javax.persistance.jar file from lib folder. issue was fixed. in pom.xml file i have remained following dependency only
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
'programing tip' 카테고리의 다른 글
SSRS 2008 R2-SSRS 2012-ReportViewer : Safari / Chrome 보고서는 있지만 Firefox / Internet Explorer 8에서는 제대로 작동합니다. 왜 그런가요? (0) | 2020.09.24 |
---|---|
Chrome에서 인라인 자바 스크립트 리디렉션 전에 자바 스크립트 중단 (0) | 2020.09.24 |
`npm install`을 실행하면`ERR! (0) | 2020.09.24 |
부울 값을 만드는 방법은 무엇입니까? (0) | 2020.09.24 |
ActiveRecord 쿼리 통합 (0) | 2020.09.24 |