webentwicklung-frage-antwort-db.com.de

Eclipse erkennt den Inhalt von persistence.xml nicht

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 

48
Mark Baijens

Ich habe das Problem folgendermaßen behoben (Ich verwende RAD v8.5.1):

  1. Windows -> Einstellungen -> Validierung
  2. Scrollen Sie nach unten zu "JPA Validator" und klicken Sie unter "Einstellungen" auf die Ellipsen.
  3. Klicken Sie auf die Schaltfläche "Include-Gruppe hinzufügen ...".
  4. Klicken Sie auf die neue eingebundene Gruppe, um sie hervorzuheben.
  5. Klicken Sie auf die Schaltfläche "Regel hinzufügen".
  6. Ein Dialogmenü erscheint. Klicken Sie auf das Optionsfeld "Ordner- oder Dateiname" und klicken Sie auf "Weiter".
  7. Klicken Sie auf "Browse Folder ..." und navigieren Sie zu Ihrem SRC-Verzeichnis (in meinem Fall war "src/main/resources") in Ihrem Projekt (mein Projekt war eine .war in einer Multi-Modul-App) in Ihrem Arbeitsbereich.
  8. Klicken Sie auf "Fertig stellen".
  9. Klicken Sie auf "OK". Dies wird zu einem vollständigen Build führen.
  10. Der Fehler wird verschwinden.
32
Chris Harris

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.

30
YoK
<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!

15
Rick

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.

14
jadrake

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)

13
willtardy

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.

8
HDave

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.

5
Kawu

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

2
Martin Trummer

Dieses Problem tritt auf, wenn Sie

  • Konvertieren Sie ein JPA-Projekt in ein Maven-Projekt oder
  • Fügen Sie die JPA-Facette einem Maven-Projekt hinzu.

Die Lösung ist 

  • Wählen Sie Windows> Einstellungen> Validierung
  • Deaktivieren Sie den JPA-Validierer für die manuelle Validierung und die Build-Validierung

Nachdem Sie diese Einstellungen geändert haben, bereinigen Sie Ihr Projekt.

2
Harun ERGUL

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.

2
Chris Hinshaw

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.

2
Dustin

enter image description hereEs 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.

1
blackberry dev

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.

1
viviansteller

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:

  • ListenelementWählen Sie den Menüpunkt Projekt> Eigenschaften> Voreinstellungen> Validierung 
  • Listenelement Deaktivieren Sie den JPA-Validierer für manuelle Validierung und Build-Validierung.

Möglicherweise müssen Sie reinigen und neu erstellen. Ihre Laufleistung kann variieren.

1
J Slick

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.

0
Fred Bricon

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.

0
Gursel Koca

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.

0
Amzi

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.

0
Max

Bei mir hat es funktioniert, nachdem ich alle Nachrichten von der Registerkarte Markierungen in Eclipse gelöscht habe

0
Sumit Khaitan

Wo befindet sich die Datei in Ihrer Projektstruktur?

Für ref habe ich meinen in maven-modulname/src/main/resources/META-INF /

0
Qwerky

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

0
Marc

das Problem wurde so gelöst:

  1. in schemaLocation habe ich "h ttp: //Java.Sun.com/xml/ns/persistence/" gelöscht, indem ich

xsi: schemaLocation = "http://Java.Sun.com/xml/ns/persistence persistence_2_0.xsd"

  1. ich fügte an der Spitze <?xml version="1.0" encoding="UTF-8"?> hinzu.

  2. ich mache das Projekt sauber. Fehler ist weg.

  3. 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 "

  1. ich mache das Projekt sauber. Fehler ist nicht da.

  2. ich habe <?xml version="1.0" encoding="UTF-8"?> oben gelöscht.

  3. ich mache das Projekt sauber. Fehler ist immer noch nicht da.

hoffe das hilft jemandem in der zukunft.

0
arvnq

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"?>
0
Robert Hume

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.

0

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)

  • Wechsel zur vorherigen Repo-Version
  • (auto-/refresh/-rebuild lief einwandfrei)

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ß:

  • validatoren, Builder, Facets deaktivieren/umkonfigurieren (bis nur Java Builder/Facet vorhanden war)
  • persistence.xml umbenennen oder auf verschiedene Weise bearbeiten

was nicht geholfen hat, als ob irgendein innerer Zustand nicht geändert werden könnte.

0

Schwer zu sagen, da schwer zu reproduzieren ist (Ihr persistence.xml ist vollkommen gültig), versuchen Sie jedoch vielleicht Folgendes:

  • Reinigen Sie das Projekt (sowohl ein "Projekt> Reinigen" als auch ein Maven clean)
  • Erzwingen Sie die erneute Überprüfung der XML-Datei durch Eclipse (klicken Sie mit der rechten Maustaste und wählen Sie XML-Datei überprüfen).
0
Pascal Thivent

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.

0
dgimenes