java.lang.NoSuchMethodError: javax.persistence.Table.indexes () [Ljavax / Persistenz / Index;

8

Ich verbessere jpa, hibernate, spring und jdk, um die neuen Funktionen von JPA 2.1 zu aktivieren. Aber ich bekomme den folgenden Fehler:

%Vor%

Ich habe andere Beiträge dazu gelesen, aber sie beheben den Fehler auf meinem Computer nicht. Zum Beispiel, SJuan76s Antwort auf dieses Posting schlägt eine Aktualisierung vor zu jpa 2.1, aber ich habe die Facette des eclipse jpa-Projekts auf Version 2.1 gesetzt und ich habe auch hibernate-jpa-2.1-api in meine pom.xml aufgenommen. Sie können alle Versionen der verschiedenen Bibliotheken in der vollständigen pom.xml lesen, indem Sie auf diesen Link klicken . Was muss ich in der pom.xml oder im Eclipse-Projekt ändern, um diesen Fehler zu beheben?

Hinweis: Ich kann den Fehler beheben, indem ich die Hibernate-Version in der Datei "pom.xml" in " <hibernate.version>4.2.1.Final</hibernate.version> " zurückverwandle, aber dies verhindert den Zweck des Upgrades. Kann das Ändern der Ruhezustandsversion den Fehler ein- und ausschalten, um das Problem zu diagnostizieren?

Wenn das Problem mehrere miteinander in Konflikt stehende Gläser sind, könnte ich den Eclipse-Typ-Manager verwenden, um eines der Gläser zu deaktivieren, aber nach welchem ​​Glas würde ich suchen?

Hier ist der komplette Stack-Trace:

%Vor%     
CodeMed 28.10.2014, 19:18
quelle

7 Antworten

7

In meinem Fall war der Übeltäter javaee-api und glassfish-Bibliotheken, die JPA 2.1 nicht unterstützten

    
Denys 10.12.2014, 20:03
quelle
11

Wenn Sie Jboss 7.1.1 verwenden, hat jboss in seinem Klassenpfad bereits hibernate-jpa-2.0 . Daher verwendet jboss während der Laufzeit den in seinem Klassenpfad, nicht den, den Sie mit Ihrer App implementiert haben, um jboss auf den% -Pfad zu verweisen. co_de% mache folgendes:

  1. Kopieren Sie hibernate-jpa-2.1 in das folgende Verzeichnis: hibernate-jpa-2.1-api-1.0.0.final.jar

  2. Öffnen Sie jboss-as-7.1.1.Final/modules/javax/persistence/api/main und ändern Sie den Ressourcenstamm wie folgt: %Code% (zeigt es auf jpa 2.1)

  3. kompilieren Sie die App erneut und stellen Sie sie anschließend wieder bereit. Dann können Sie loslegen.

James Akim 26.01.2015 09:10
quelle
2

Ich habe viel Zeit damit verbracht.

Für mich war es das javax.persistence.jar, das mit Hibernate-Jars in Konflikt steht.

Ich habe die persistence.jar entfernt und es hat angefangen zu arbeiten.

    
Adam Davis 21.12.2016 16:58
quelle
1

Sie können Hibernate-jpa-2.1-api-1.0.0.Final.jar importieren. Es ist nicht ejb3-persistence.jar.

    
Timmy 24.11.2014 15:27
quelle
1

Im Falle von JBoss7 sollten Sie das api jar in jboss7 / modules / javax / persistence / api durch eine Aktualisierung der Datei module.xml mit der aktualisierten jar-Datei ersetzen.

    
sinihong 20.01.2015 21:03
quelle
0

Zuerst müssen Sie herausfinden, welche Abhängigkeit die falsche JPA bringt. Um dies zu tun, verwende maven dependency: tree. Die Ausgabe ist ziemlich einfach und Sie können bestimmen, was ausgeschlossen werden soll.

Ausschließen Sie etwas wie folgt:

%Vor%

Entschuldigung, ich kann nicht mehr helfen, aber mit den Informationen, die Sie zur Verfügung stellen, ist dies alles, was ich tun kann.

Prost.

    
hcura 30.10.2014 16:17
quelle
0

Ich habe das gleiche Problem in meinem Projekt behoben, indem ich die Hibernate ejb3-Lib ausgeschlossen habe, die über eine transitive Abhängigkeit eingebunden wurde. Die Abhängigkeit von maven dependency: tree war wie folgt:

%Vor%

In meinem Projekt war dies ursprünglich in dem ausführbaren Jar enthalten, den mein Build-Prozess über das Maven-Assembly-Plugin erzeugte. Um dies (und andere libs) auszuschließen, habe ich die dependencySet-Konfiguration des Assembly-Plugins in src / main / assemble / test-jar-with-dependencies.xml:

verwendet %Vor%

Hoffe das hilft!

    
mrjmh 03.11.2014 19:29
quelle

Tags und Links