JPA mit TopLink: Im Klassenpfad wurde keine META-INF / persistence.xml gefunden

8
%Vor%

Ich erhalte eine Ausnahme, wenn ich versuche, diese Klasse auszuführen

%Vor%

META-INF / persistence.xml befindet sich in meinem Klassenpfad. Ich weiß nicht, was der Grund oder diese Ausnahme ist.

Persistenzbibliothek ist TopLink.

    
Switch 14.08.2009, 17:20
quelle

7 Antworten

22

Ich hatte das gleiche Problem, ich habe meine Datei persistence.xml im Verzeichnis WebContent / META-INF gespeichert, während die jpa-Spezifikation sagt:
Die Wurzel der Persistenzeinheit ist das WEB-INF / Klassenverzeichnis; Die Datei persistence.xml befindet sich daher im Verzeichnis WEB-INF / classes / META-INF
Versuchen Sie, persistence.xml unter src / META-INF zu platzieren.

    
marcosbeirigo 11.03.2010 00:47
quelle
3

Wenn Sie IntelliJ oder eine Maven-Projektstruktur verwenden, müssen Sie die gesamte "META-INF/persistence.xml" -Datei im Ordner mit den Ressourcen (src / resources) ablegen, damit Ihre persistence.xml -Datei in "WEB-INF/classes/persistence.xml" location verschoben wird .

Wenn Sie eclipse oder etwas anderes verwenden, werden die Änderungen entsprechend vorgenommen, sodass die Datei in WEB-INF/classes/persistence.xml

verschoben wird

alles andere hat nicht für mich funktioniert.

    
Aniruddha Das 04.04.2016 21:52
quelle
2

Der Fehler ist etwas irreführend. die XML-Datei selbst sollte nicht im Klassenpfad sein; Der Teil der Nachricht "META-INF / persistence.xml" bedeutet, dass das Verzeichnis, das META-INF / persistence.xml enthält, sein sollte.

Wenn Ihre Festplatte folgendes hat:

C: \ libs \ JPA \ META-INF \ Persistence.xml

, dann sollte Ihr Klassenpfad dies enthalten

%Vor%

Wenn META-INF \ Persistence.xml in foo.jar enthalten wäre, sollte META-INF / Persistence.xml im Stammverzeichnis von jar liegen, und Ihr Klassenpfad sollte das haben

%Vor%

Das mag offensichtlich oder überflüssig erscheinen, aber mein Ziel ist es, sicherzustellen, dass wir Äpfel mit Äpfeln vergleichen und der CLASSPATH zusammen mit dem Klassenladen ein Problem sein kann.

Also, können Sie Ihren CLASSPATH veröffentlichen?

    
Kelly S. French 14.08.2009 20:08
quelle
1

persistence.xml sollte nicht in Ihrem Klassenpfad sein; JAR-Datei, die persistence.xml in ihrem META-INF-Ordner enthält, sollte.

    
ChssPly76 14.08.2009 17:27
quelle
1

Ich habe eine Webanwendung und die folgenden funktionierten gut. Was ich getan habe, war das META-INF-Verzeichnis mit der persistence.xml in das src / main / resources location [Maven-Projekt]

hinzuzufügen     
nu1silva 06.03.2012 08:15
quelle
0

Ihre Datei META-INF / persistence.xml sollte etwa so aussehen:

%Vor%

Das Attribut name Ihrer Persistenzeinheit in Ihrer Datei persistence.xml stimmt nicht mit dem Wert überein, den Sie an die Persistence.createEntityManagerFactory-Methode übergeben. Stellen Sie sicher, dass der Name Ihrer Persistenzeinheit auf "IRCBotPU" festgelegt ist.

    
Bryan 14.08.2009 17:49
quelle
0

Ich habe einen Ordner namens META-INF unter src erstellt und es funktioniert. "Marcosbeirigo" hat es bereits beantwortet. Ich weiß nicht, warum ich diese persistance.xml da drinnen haben muss. Ich habe es unter WebContent / META-INF gestellt und nicht funktioniert

    
Wai Hein 06.12.2013 16:56
quelle