2008-09-16 11 views
9

Ich versuche, Testdaten in eine Test-DB während einer Maven Build für Integrationstests zu laden. persistence.xml wird korrekt in target/test-classes/META-INF/ kopiert, aber ich erhalte diese Ausnahme, wenn der Test ausgeführt wird.persistence.xml nicht gefunden während Maven-Test

javax.persistence.PersistenceException: Kein Persistence Provider für EntityManager namens aimDatabase

Es sieht aus wie es nicht ist zu finden oder Laden persistence.xml.

Antwort

2

Wenn dies unter Windows geschieht, können Sie mit sysinternal procmon herausfinden, ob es den richtigen Pfad überprüft.

Einfach nach Pfad filtern -> enthält -> persistence.xml. Procmon nimmt alle Versuche auf, eine Datei namens persistenc.xml zu öffnen, und Sie können überprüfen, ob der Pfad oder die Pfade, die versucht werden, angezeigt werden.

Sehen Sie hier für weitere Einzelheiten über procmon: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

2

ich hatte das gleiche Problem und es war nicht, dass es nicht die persistence.xml Datei finden konnte, aber dass es nicht den Provider angegeben finden konnten in das XML.

Stellen Sie sicher, dass Sie die richtigen JPA-Provider-Abhängigkeiten und die richtige Providerdefinition in Ihrer XML-Datei haben.

dh. <provider>oracle.toplink.essentials.PersistenceProvider</provider>

Mit Maven, musste ich die 2 toplink-essentials Gläser lokal installieren, da es keine öffentlichen Repositories gab, die die Abhängigkeiten hielten.

1

haben wir das gleiche Problem, tun an dem Projekt einiger Optimierungen und finaly finden folgende Problem (klare Fehlerbeschreibung): bei oracle.toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL (PersistenceUnitProcessor.java:248)

Mit diesen Informationen wir eine primäre Regel erinnert sich: NO WHITE SPACES IN PATH NAMEN !!!

Versuchen Sie es. Funktioniert für uns Lächeln. Vielleicht eines Tages wird das behoben sein.

Hoffe, das funktioniert für Sie. Viel Glück.

6

Ich verwende Maven2, und ich hatte vergessen, diese Abhängigkeit in meiner pom.xml-Datei hinzufügen:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>3.4.0.GA</version> 
</dependency> 
+0

sehr gut! Mein Fehler auch :) Danke – artaxerxe

16

gelöst Genau das gleiche Problem mit einem Maven/Eclipse-basierten JPA-Projekt.

Ich hatte mein META-INF-Verzeichnis unter src/main/java mit der Konsequenz, dass es vor der Testphase nicht in das Zielverzeichnis kopiert wurde.

Das Verschieben dieses Verzeichnisses auf src/main/resources löste das Problem und stellte sicher, dass die Datei META-INF/persistence.xml in target/classes vorhanden war, als die Tests ausgeführt wurden.

ich denken, dass die JPA Facette in src/main/java meine META-INF/persistence.xml Datei setzen, die die Wurzel meines Problems entpuppte.

+0

+1: Ich hatte ein ähnliches Problem, und Ihr Vorschlag hat es behoben. – Raedwald

+0

Vielen Dank, das hat Stunden der Fehlerbehebung gespart! – javydreamercsw

+0

Danke ein loooottt! – Sara

1

Ist Ihre Datei persistence.xml in scr/test/resources? Weil ich ähnliche Probleme hatte.

Alles funktioniert gut, solange mein persistence.xml in src/main/resources befindet.

Wenn ich persistence.xml zu src/test/resources nichts bewegen geht mehr.

Die einzige hilfreich, aber traurige Antwort ist hier: http://jira.codehaus.org/browse/SUREFIRE-427

Scheint, als ob es nicht möglich, jetzt aus unklaren Gründen. :-(