2016-04-06 10 views
0

Ich migriere ein Projekt, das auf Tomcat 8 zu Weblogic ausgeführt wurde. Ich verwende Hibernate + JPA 2. Wenn ich in WebLogic einsetzen bekam folgende Fehlermeldung:Weblogic + Hibernate-Fehler: javax.persistence.JoinTable.indexes() [Ljavax/Persistenz/Index

Failure occurred in the execution of deployment request with ID "26012160125422" for task "114". Error is: "weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.JoinTable.indexes()[Ljavax/persistence/Index;" 

weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.JoinTable.indexes() [Ljavax/Persistenz/Index

Umwelt
- Java: jdk1.8.0_60
- Weblogic: 12.1.3
- hibernate-EntityManager: 4.3.1.Final
- hibernate-Kern: 4.3.1.Final
- javaee-api: 7,0

pom.xml

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.1.Final</version> 
    </dependency>   
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.1.Final</version>   
    </dependency> 
    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>sqljdbc4</artifactId> 
     <version>4.0</version> 
    </dependency>  
</dependencies> 

Antwort

0

Es ist seltsam, dass Sie verwenden javaee-api-7.0.jar, Hibernate 4 hibernate-jpa-2.1-api-1.0.0.Final.jar als Abhängigkeit hat. Aber es ist kein Grund für den Fehler.

JoinTable.indexes() wurde mit Java Persistence 2.1 hinzugefügt. Sie haben also nur ein altes Jar mit JoinTable Annotation im Klassenpfad (in den Weblogic-Standard-Lib-Ordnern).

Um zu überprüfen, wo dieses Glas, diesen Code vor dem Hibernate-Konfigurationscode ausführen

URL joinTableUrl = Thread.currentThread().getContextClassLoader() 
    .getResource(
    "javax/persistence/JoinTable.class"); 
System.out.println(joinTableUrl); 

JoinTable Um zu überprüfen, hat indexes() Methode

Class<?> joinTable = Thread.currentThread().getContextClassLoader() 
     .loadClass(JoinTable.class.getName()); 

System.out.println(Arrays.asList(joinTable.getDeclaredMethods()));