Ich erhalte folgende Fehlermeldung in Eclipse:
Die Datei persistence.xml hat keinen erkannten Inhalt.
Meine persistence.xml-Datei funktioniert in meiner Anwendung hervorragend, aber Eclipse gibt mir diesen Fehler weiter. Ich habe dies erhalten, nachdem ich die Datei verschoben und meine Projektkonfiguration mit m2Eclipse aktualisiert habe. Ich habe die Datei selbst nicht geändert. Weiß jemand, wie man das löst?
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://Java.Sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="localDB" transaction-type="RESOURCE_LOCAL">
<provider>org.Apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>package.Users</class>
<properties>
<!-- enable warnings for debugging -->
<property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
<!-- connection properties -->
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost/test"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionUserName" value="root"/>
<property name="openjpa.ConnectionPassword" value=""/>
</properties>
</persistence-unit>
</persistence>
Update
Sieht wie ein Fehler in m2Eclipse in Kombination mit jpa aus.
https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323
Vorübergehend gelöst, indem Sie die Option so einstellen, dass sie als Warnung anstelle eines Fehlers angezeigt wird
Ich habe das Problem folgendermaßen behoben (Ich verwende RAD v8.5.1):
Hatte dasselbe Problem mit dem Fehler
Die Datei persistence.xml hat keinen erkannten Inhalt
Fixiert durch Bearbeiten der Datei in Eclipse, kann jede Bearbeitung ausgeführt werden. Und nach dem Speichern ist ein Fehler gekommen.
<persistence xmlns="http://Java.Sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence
http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
Arbeitete für mich!
Ich habe herausgefunden, was das Problem hier ist ... Die JPA-Facet geht davon aus, dass sich der META-INF-Ordner direkt unter einem Quellordner befindet. Wenn Sie ein Maven-Projekt verwenden, haben Sie wahrscheinlich etwas wie src/main/resources oder src/test/resources. Wenn sich Ihre persistence.xml in diesen Ordnern befindet, wird dies ein Problem darstellen. Wenn Sie einen neuen Quellordner erstellen (nennen Sie ihn "jpa") und darin eine META-INF/persistence.xml-Datei erstellen, wird sie erfolgreich gefunden. (Ich musste auch ein sauberes/geschlossenes/offenes Projekt machen)
Dies ist sicherlich ein Schmerz ... und ich kann viele Situationen sehen, die nicht gut funktionieren.
Ich hatte das gleiche Problem in Eclipse 3.6 (Helios). Die Ursache war, dass JPA Facet auf JPA Version 1.0 eingestellt war. In meiner persistence.xml-Datei war jedoch JPA Version 2 angegeben. Also habe ich JPA Facet auf Version 2.0 geändert, und das Problem wurde behoben. (Projekt -> Eigenschaften -> Projektfacetten -> Dropdown-Menü "Konfiguration" -> auf "Minimale JPA 2.0-Konfiguration" setzen)
Wenn Sie diesen Fehler in eine Warnung umwandeln, wird das Problem möglicherweise behoben, das zugrunde liegende Problem mit dem Eclipse-Dali-Plugin wird jedoch nicht behoben. Dies bedeutet auch, dass die äußerst nützlichen Ansichten JPA Structure und JPA Details nicht funktionieren.
Der von OP angebotene Link und der Ansatz der meisten Antworten sollen eigentlich ein anderes Problem umgehen, bei dem Maven die persistence.xml-Datei filtern möchte und Eclipse daher anweist, sie zu ignorieren. Eine praktikable Problemumgehung für dieses Problem wird erklärt hier und beinhaltet das Entfernen des ausgeschlossenen: '**' aus dem Eintrag src/main/resources im Klassenpfad in den Projekteigenschaften.
Zurück zur ursprünglichen Frage des OPs, hatte ich genau diese Fehlermeldung (die sich in und aus selbst zeigt, dass die Datei persistence.xml gefunden wurde). Für mich bestand die Lösung darin, das Persistenz-XML-Element wie folgt zu ändern:
<persistence xmlns="http://Java.Sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence
http://Java.Sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
zu diesem:
<persistence xmlns="http://Java.Sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence
http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
Einmal geändert, ging der Fehler weg und Dali wurde sofort lebendig und jetzt funktioniert alles einfach. Hoffe das hilft jemandem eines Tages.
Der Fehler ist bei bestimmten Indigo (3.7) -Versionen erneut aufgetreten. Siehe hier: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=35781
Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Projektkonfiguration aktualisieren ...
Dies könnte bestimmte Buildpath-Einträge und/oder die Deployment-Assembly zerstören, was sehr ärgerlich ist. Tun Sie dies also nur, wenn Sie die Maven-Abhängigkeit ändern.
Um die persistence.xml-Meldung zu umgehen, bis der Patch veröffentlicht ist, müssen Sie das Projekt bei vielen Vorgängen bereinigen, da selbst das Festlegen der Fehlerstufe auf "Ignorieren" nicht funktioniert . Das ist ein völliger Mist.
Ich habe das Problem behoben, indem ich zu Project - Properties - Java Persistence: ging und dann den "Source Folder" im Abschnitt "Canonical metamodel (JPA 2.0)" auf "src/generated/resources" setzt
Dieses Problem tritt auf, wenn Sie
Die Lösung ist
Nachdem Sie diese Einstellungen geändert haben, bereinigen Sie Ihr Projekt.
Ich verwende Eclipse mars und hatte genau diesen Fehler. Ich musste die Version von jpa für die Projektfacette festlegen. right click project -> Properties -> Project Facets
In meinem Fall Version von jpa auf 2.1 setzen.
Hinweis: Durch das Konfigurieren der jpa-Projektfacette wird der Fehler nicht behoben. Sie müssen auch die Plattform konfigurieren.
Als nächstes musste ich die JPA-Plattform konfigurieren. right click project -> Properties -> JPA
. Ändern Sie in meinem Fall Platoform zu Hibernate 2.1.
Dieses Problem tritt auch auf, wenn Sie die persistence.xml mit dem Persistence XML Editor öffnen und Sie nur unten eine einzige Source
-Registerkarte und nicht die anderen Registerkarten für Allgemein, Verbindung, Optionen, Eigenschaften usw.
Gibt es Updates dazu? Dies ist immer noch ein Thema, scheint es richtig? Wenn ich ein JPA-Projekt erstelle, in ein Maven-Projekt konvertieren, wird der Fehler angezeigt und ich kann ihn mit keiner der empfohlenen Methoden entfernen.
Bearbeiten
Ok, also nach dem Manövrieren einiger Ordner, also in einem tatsächlichen Maven-Verzeichnisformat , funktionierte es immer noch nicht - aber das Erstellen eines verknüpften Ordners unter src/main/Java
mit dem Namen META-INF, verknüpft mit src/main/resources/META-INF
, wurde aufgelöst.
Das Erstellen eines Maven-Projekts und das Hinzufügen der JPA-Facette funktioniert auch, aber nur, weil die JPA-Facette die Dateien META-INF und persistence.xml zu src/main/Java
hinzufügt, was meiner Meinung nach nicht genau richtig ist.
Es ist nicht notwendig, alles in Ihrer XML-Datei zu ändern, und Sie müssen keine XML-Dateien im SRC-Ordner hinzufügen. Legen Sie die Datei persistance.xml in den Ordner META-INF und anschließend den Ordner META-INF src/main/resource ab. Versuchen Sie folgendes Vorgehen: Klicken Sie mit der rechten Maustaste auf
project> Java Build path > Source Tab > ProjectName/src/main/resource > set Included(All) and Excluded(None).
, und bereinigen Sie Ihr Projekt. Es wird für Sie arbeiten. Versuchte diesen Ansatz auf RAD 7 & 8..5 & Eclipse.
Das Problem wurde behoben, indem in Eclipse ein "symbolischer Link" erstellt wurde. Meine persistence.xml-Datei bleibt also in src/main/resources/META-INF, wie Maven erwartet und m2Eclipse erfordert. Um die Dali-Probleme zu beheben, erstellen Sie jedoch eine neue Datei in src/main/Java/META-INF, die eine Verknüpfung zu der Datei in src/main/resources/META-INF herstellt. Klicken Sie auf "Erweitert", wenn Sie die neue Datei erstellen und die Datei über die Schaltfläche "Durchsuchen ..." suchen. Beachten Sie, dass dadurch keine physische Datei im Ordner META-INF erstellt wird. Sie benötigen jedoch den Ordner selbst, um die Verknüpfung zu erstellen.
Hoffe das funktioniert für dich.
Ich hatte src/main/Java/META-INF/persistence.xml
in Eclipse mit eingebettetem Tomcat gut funktioniert. Da es nicht in die von Maven erstellte WAR-Datei kopiert wurde, habe ich es nach src/main/resources/META-INF
verschoben.
Jetzt wird src/main/resources/META-INF/persistence.xml
nicht validiert.
Wenn Sie die Datei in xyz_persistence.xml umbenennen, wird die Feinprüfung bestätigt.
Wenn Sie die Datei in persistence.xml umbenennen, kann sie nicht überprüft werden.
Wenn diese lästigen Situationen auftreten, finde ich oft zahlreiche verschiedene "Lösungen" wie die meine, von denen die meisten nicht universell anwendbar sind.
Hier ist meine "Lösung", die ich für einen Hacker halte, um einen Fehler zu umgehen:
Um den Fehler "persistence.xml-Datei hat nicht erkannten Inhalt" -Fehler zu entfernen, deaktivieren Sie den JPA-Validator:
Möglicherweise müssen Sie reinigen und neu erstellen. Ihre Laufleistung kann variieren.
Das Problem wurde in Indigo behoben (im Juni 2011 veröffentlicht), siehe https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323#c24 und https: //issues.sonatype .org/browse/MECLIPSEWTP-11 .
Die Datei "persistence.xml hat nicht erkannten Inhalt". Der Fehler kann beim Projektimport oder beim Starten von Workspace nach dem Zufallsprinzip immer noch auftreten, kann jedoch durch ein Projektbereinigungs- oder Mavenprojektupdate behoben werden. Dies wird in Dali in SR2 behoben.
Ich bin durch dasselbe Problem gekommen. Springen Sie zu Projekteigenschaften -> Java-Erstellungspfad -> Quelle. Entfernen Sie das Java-Attribut '/. Fügen Sie dann META-INF/persistence.xml hinzu. Starten Sie Eclipse anschließend neu. Sie sollten unter JPA-Inhalt im Projekt-Explorer persistence.xml persistieren. Danach machen Sie Ihre Änderungen rückgängig.
Nun, was ich vorschlage, wirkt dumm, aber es funktioniert magisch. Meine Eclipse-Version ist übrigens 3.6.
Ich habe das Problem behoben, indem ich den META-INF-Ordner in "src/main/resources" gezogen und ihn zurück in "src/test/resources" gezogen habe. Das war alles, was ich brauchte, um das Problem zu beheben. Ich habe alle Schritte ausprobiert, aber keine davon scheint für mich zu funktionieren, und schließlich hat dieser den Trick gemacht.
Ich hatte das gleiche Problem. Meine Lösung: Klicken Sie mit der rechten Maustaste auf die Datei persistence.xml -> JPA-Tools -> Klassenliste synchronisieren. Danach wurde es gelöst.
Bei mir hat es funktioniert, nachdem ich alle Nachrichten von der Registerkarte Markierungen in Eclipse gelöscht habe
Wo befindet sich die Datei in Ihrer Projektstruktur?
Für ref habe ich meinen in maven-modulname/src/main/resources/META-INF /
In meinem Fall war es das Maven-Plugin, das einen Fehler hat, der "Exclude" auf setzt. im Erstellungspfad für Ihren Ressourcenordner. entfernen. Ich habe das Problem für mich gelöst
das Problem wurde so gelöst:
xsi: schemaLocation = "http://Java.Sun.com/xml/ns/persistence persistence_2_0.xsd"
ich fügte an der Spitze <?xml version="1.0" encoding="UTF-8"?>
hinzu.
ich mache das Projekt sauber. Fehler ist weg.
ich fügte wieder "http: //Java.Sun.com/xml/ns/persistence/" hinzu:
xsi: schemaLocation = "http://Java.Sun.com/xml/ns/persistence http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd "
ich mache das Projekt sauber. Fehler ist nicht da.
ich habe <?xml version="1.0" encoding="UTF-8"?>
oben gelöscht.
ich mache das Projekt sauber. Fehler ist immer noch nicht da.
hoffe das hilft jemandem in der zukunft.
Ich hatte das gleiche Problem. Um es verschwinden zu lassen, musste ich sicherstellen, dass diese Zeile die erste Zeile am Anfang der Datei war (ohne Leerzeichen oder Leerzeichen):
<?xml version="1.0" encoding="UTF-8"?>
Ich hatte das gleiche Problem bei einigen Gelegenheiten und es funktionierte für mich, den Inhalt der Datei zu kopieren, zu löschen, eine neue persistence.xml-Datei zu erstellen und den Inhalt wieder einzufügen.
Ok ... eine weitere recht robuste Lösung, die für mich funktioniert hat, da die Top-Most-Lösungen nicht waren:
da ich Mercurial verwendet habe und leicht zurückgehen konnte, ohne dass es Unterschiede in der aktuellen und der letzten Version gab, funktionierte es folgendermaßen:
(hat einige wichtige Änderungen vorgenommen, die nichts mit diesem Problem zu tun haben)
Was ich erkannte, war, dass das Problem möglicherweise auf die Tatsache zurückzuführen war, dass der Java Builder meine war/WEB-INF/classes/
-Dateien nicht generierte. Der folgende Weg hat nicht funktioniert, indem er mein Projekt bauen ließ:
persistence.xml
umbenennen oder auf verschiedene Weise bearbeitenwas nicht geholfen hat, als ob irgendein innerer Zustand nicht geändert werden könnte.
Schwer zu sagen, da schwer zu reproduzieren ist (Ihr persistence.xml
ist vollkommen gültig), versuchen Sie jedoch vielleicht Folgendes:
clean
)Ich hatte den gleichen Fehler, habe ihn aber auf andere Weise gelöst.
Die Sache ist, dass META-INF als Quellordner betrachtet werden muss, und da es sich unter/ejbModule befand (mein Projekt ist ein EJB-Projekt), ging ich davon aus, dass es sich im Erstellungspfad befand. Und es war nicht so. Eigentlich war es auf "Ausschlussliste" im Build-Pfad. Alles, was ich tat, war, mit der rechten Maustaste auf den META-INF-Ordner in der Projekt-Explorer-Ansicht zu klicken und im Build-Pfad-Menü INCLUDE auszuwählen. Dann bat ich Eclipse, das Projekt zu säubern und alles war wieder in Ordnung.
Freundliche Grüße.