JPA mit TopLink: Nein META-INF/persistence.xml gefunden wurde im classpath
public class LoginTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("IRCBotPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Login lg = new Login();
lg.setPassword("password");
lg.setUserName("Rocky");
em.persist(lg);
em.flush();
Login st = em.find(Login.class, lg.getPassword());
System.out.println(st);
em.getTransaction().commit();
em.close();
emf.close();
}
}
Ich bekomme eine Exception wenn ich versuche zu laufen, diese Klasse
javax.persistence.PersistenceException: No Persistence provider for EntityManager named IRCBotPU:
No META-INF/persistence.xml was found in classpath.
META-INF/persistence.xml ist in meinen classpath. Ich weiß nicht, was ist der Grund oder die diese Ausnahme.
Persistenz-Bibliothek ist TopLink.
- Ja, ich habe die gleiche Struktur
- Könnten Sie behoben haben 🙂 ich habe gerade.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem, ich behielt meine persistence.xml Datei in den WebContent/META-INF-Verzeichnis, während die jpa-Spezifikation sagt, dass:
der root der persistenzeinheit ist das WEB-INF/classes-Verzeichnis; die persistence.xml die Datei ist daher, die in der WEB-INF/classes/META-INF-Verzeichnis
versuchen Sie, persistence.xml unter src/META-INF.
wenn Sie
IntelliJ
oder ein maven-Projekt-Struktur, die Sie benötigen, um die gesamte"META-INF/persistence.xml"
- Datei in die Ressourcen(src/resources-Ordner), so dass es sich bewegen wird, Ihrepersistence.xml
Datei in"WEB-INF/classes/persistence.xml"
Lage.wenn Sie
eclipse
oder etwas anderes macht die änderungen entsprechend an, so dass es sich bewegen wird, die Datei zuWEB-INF/classes/persistence.xml
alles andere hat bei mir nicht funktioniert.
Die Fehlermeldung ist etwas irreführend. die XML-Datei selbst sollte nicht werden in den classpath; der Teil der Nachricht zu sagen "META-INF/persistence.xml" bedeutet, dass das Verzeichnis mit META-INF/persistence.xml sollte werden.
Wenn Ihre Festplatte hatte den folgenden
C:\libs\JPA\META-INF\Persistence.xml
dann der classpath sollte auch diese
Wenn META-INF\Persistence.xml enthalten waren foo.jar vorausgesetzt META-INF/Persistence.xml waren, die sich auf den root-Ordner der jar, der classpath sollte diese
Dieses offensichtlich scheinen kann oder redundant, aber mein Ziel ist es sicherzustellen, wir vergleichen äpfel mit äpfeln und dem CLASSPATH, zusammen mit zum laden von Klassen, können Sie einen Kerl zu beschäftigen.
So, können Sie Ihre CLASSPATH?
persistence.xml
sollte nicht in Ihrem classpath; JAR-Datei enthältpersistence.xml
in seiner META-INF-Ordner sollte.ich habe eine web-Anwendung und die folgenden fein gearbeitet. Was ich Tat, war fügen Sie den META-INF-Verzeichnis mit der persistence.xml in der src/main/resources Standort [Maven-Projekt]
Ihre META-INF/persistence.xml die Datei sollte in etwa so Aussehen:
Ihre persistence-unit name-Attribut in das persistence.xml nicht dem Wert entsprechen, der du bist übergang in die Persistenz.createEntityManagerFactory Methode. Stellen Sie sicher, dass Sie Ihre Ausdauer-Einheit namens "IRCBotPU".
Ich einen Ordner erstellt habe callled META-INF unter " src " und " es funktioniert. "marcosbeirigo", antwortete Sie schon. Ich weiß nicht, warum ich, dass persistance.xml dort obwohl. Ich habe es unter WebContent/META-INF und hat nicht funktioniert