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.
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
alles andere hat nicht für mich funktioniert.
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?
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.
Tags und Links java jpa persistence classpath toplink