web-dev-qa-db-fra.com

Eclipse ne reconnaît pas le contenu de persistence.xml

Je reçois l'erreur suivante dans Eclipse:

Le fichier persistence.xml n'a pas de contenu reconnu.

Mon fichier persistence.xml fonctionne parfaitement dans mon application, mais Eclipse continue de me donner cette erreur. Je l’ai obtenu après avoir déplacé le fichier et mis à jour la configuration de mon projet avec m2Eclipse. Je n'ai pas changé le fichier lui-même. Quelqu'un sait comment résoudre cela?

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>

Mettre à jour

Cela ressemble à un bug dans m2Eclipse en combinaison avec jpa.

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323

Temporairement résolu en configurant l'option pour l'afficher sous forme d'avertissement au lieu d'une erreur 

48
Mark Baijens

J'ai corrigé le problème de la manière suivante (j'utilise RAD v8.5.1):

  1. Windows -> Préférences -> Validation
  2. Faites défiler jusqu'à "JPA Validator" et cliquez sur les ellipses sous Paramètres.
  3. Cliquez sur le bouton "Ajouter un groupe d'inclusion ...".
  4. Cliquez sur le nouveau groupe d'inclusion qui apparaît pour le surligner.
  5. Cliquez sur le bouton "Ajouter une règle ...".
  6. Un menu de dialogue apparaît. Cliquez sur le bouton radio "Nom du dossier ou du fichier" et cliquez sur "Suivant".
  7. Cliquez sur "Parcourir le dossier ..." et accédez à votre répertoire src (dans mon cas, il s'agissait de "src/main/resources") dans votre projet (mon projet était un fichier .war dans une application à plusieurs modules) de votre espace de travail.
  8. Cliquez sur "Terminer".
  9. Cliquez sur "OK". Cela incitera une construction complète.
  10. L'erreur disparaîtra.
32
Chris Harris

A eu le même problème avec l'erreur

Le fichier persistence.xml n'a pas de contenu reconnu

Fixé par l'édition de fichier dans Eclipse, toute édition fera l'affaire. Et après avoir sauvé l'erreur, je suis parti.

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

Travaillé pour moi!

15
Rick

J'ai compris le problème ici ... la facette JPA suppose que le dossier META-INF se trouve directement sous un dossier source. Si vous utilisez un projet Maven, vous avez probablement quelque chose comme src/main/resources ou src/test/resources. Si votre persistence.xml se trouve sous ces dossiers, il se plaindra. Si vous créez un nouveau dossier source (appelez-le "jpa") et créez un fichier META-INF/persistence.xml, il le trouvera avec succès. (Je devais aussi faire un projet propre/fermé/ouvert)

C'est certainement une douleur ... et je peux voir de nombreuses situations, cela ne fonctionnera pas bien.

14
jadrake

J'ai eu ce même problème dans Eclipse 3.6 (Helios). La cause était que la facette JPA était définie sur la version 1.0, mais mon fichier persistence.xml spécifiait la version 2 de JPA. J'ai donc remplacé la facette JPA par la version 2.0 et le problème a disparu. (Projet -> Propriétés -> Facettes du projet -> Menu déroulant "Configuration" -> définissez ceci sur "Configuration minimale JPA 2.0"

13
willtardy

Si vous transformez cette erreur en avertissement, le problème disparaîtra, mais cela ne résoudra pas le problème sous-jacent au plug-in Eclipse Dali. Cela signifie également que les vues extrêmement utiles de la structure JPA et des détails de la JPA ne fonctionneront pas.

Le lien proposé par OP et l'approche de la plupart des réponses proposées ici sont en réalité destinés à résoudre un problème différent dans lequel Maven souhaite filtrer le fichier persistence.xml et demande donc à Eclipse de l'ignorer. Un contournement viable de ce problème est expliqué ici et implique la suppression de la mention "**" exclue de l’entrée src/main/resources dans le chemin de classe dans les propriétés du projet.

Pour revenir à la question initiale du PO, j'avais ce même message d'erreur EXACT (qui vous indique lui-même que le fichier persistence.xml a été localisé). Pour moi, la solution consistait à changer l'élément XML de persistance à partir de ceci:

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

pour ça:

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

Une fois changée, l'erreur disparut et Dali s'installa instantanément et maintenant tout fonctionnait avec Just Works. J'espère que cela aidera quelqu'un un jour.

8
HDave

Le bogue est réapparu pour certaines versions d'Indigo (3.7). Voir ici: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=357810

Cliquez avec le bouton droit sur le projet -> Maven -> Mettre à jour la configuration du projet ...

Ceci pourrait détruire certaines entrées du chemin de construction et/ou l’Assemblée de déploiement, ce qui est très gênant. Ne le faites donc que lorsque vous modifiez Maven.

Pour contourner le message persistence.xml jusqu'à la publication du correctif, vous devez nettoyer le projet sur de nombreuses opérations, car même définir le niveau d'erreur sur "ignore" ne fonctionne pas. C'est une déception totale.

5
Kawu

J'ai résolu ce problème en allant dans Projet - Propriétés - Persistance Java: puis en définissant le "Dossier source" de la section "Métamodèle Canonical (JPA 2.0)" sur "src/generate/resources"

2
Martin Trummer

Ce problème se produit si vous

  • Convertir un projet JPA en projet Maven ou
  • Ajoutez la facette JPA à un projet Maven.

La solution est 

  • Sélectionnez Windows> Préférences> Validation
  • Désactiver le validateur JPA pour la validation manuelle et la validation de la construction

Après avoir modifié ces paramètres, nettoyez votre projet.

2
Harun ERGUL

J'utilise Eclipse Mars et j'ai eu exactement la même erreur. Ce que je devais faire était de définir la version de jpa pour la facette du projet. right click project -> Properties -> Project Facets Définir la version de jpa à 2.1 dans mon cas. 

Remarque: Simplement configurer la facette du projet jpa ne supprimera pas l'erreur. Vous devez également configurer la plate-forme.

Ensuite, j'ai dû configurer la plate-forme JPA. right click project -> Properties -> JPA. Changez platoform en Hibernate 2.1 dans mon cas. 

Ce problème se manifeste également lorsque vous ouvrez le fichier persistence.xml avec l'éditeur XML de persistance et que vous ne disposez que d'un seul onglet Source au bas et non des autres onglets pour Général, Connexion, Options, Propriétés, etc.

2
Chris Hinshaw

Des mises à jour à ce sujet? C'est toujours un problème il semble juste? Si je crée un projet JPA converti en projet Maven, l'erreur apparaît et je ne peux pas m'en débarrasser avec aucune des méthodes recommandées.

Modifier

Ok, donc après avoir manoeuvré des dossiers pour les placer dans un répertoire format de répertoire Maven , cela ne fonctionnait toujours pas - mais en créant un dossier lié sous src/main/Java nommé META-INF, lié à src/main/resources/META-INF, il a été résolu.

La création d'un projet Maven et l'ajout de la facette JPA fonctionnent également, mais uniquement parce que la facette JPA ajoute le fichier META-INF et le fichier persistence.xml à src/main/Java, ce que je ne pense pas être tout à fait correct.

2
Dustin

enter image description herePas besoin de changer et rien dans votre fichier XML et pas besoin d'ajouter XML dans le dossier src. Placez votre fichier persistance.xml dans le dossier META-INF, puis placez le dossier META-INF src/main/resource. Essayez l’approche suivante: .__ Faites un clic droit sur project> Java Build path > Source Tab > ProjectName/src/main/resource > set Included(All) and Excluded(None). puis nettoyez et construisez votre projet. Cela fonctionnera pour vous. J'ai essayé cette approche le RAD 7 & 8..5 & Eclipse.

1
blackberry dev

J'ai résolu le problème en créant un "lien symbolique" dans Eclipse. Ainsi, mon fichier persistence.xml reste dans src/main/resources/META-INF comme Maven l’attend et que m2Eclipse le requiert. Toutefois, afin de résoudre les problèmes liés à Dali, créez un nouveau fichier dans src/main/Java/META-INF qui sera lié à celui de src/main/resources/META-INF. Pour ce faire, cliquez sur les options "Avancé" lors de la création du nouveau fichier et localisez le fichier à l'aide du bouton "Parcourir ...". Notez que cela ne créera pas de fichier physique dans le dossier META-INF. Toutefois, vous avez besoin du dossier lui-même pour créer le lien.

J'espère que cela fonctionne pour vous.

1
viviansteller

src/main/Java/META-INF/persistence.xml fonctionnait correctement sous Eclipse avec Tomcat intégré. Comme il n'était pas copié dans le fichier WAR construit par Maven, je l'ai déplacé vers src/main/resources/META-INF.

Maintenant, src/main/resources/META-INF/persistence.xml ne sera pas validé.

Si vous renommez xyz_persistence.xml, cela se passe bien.
Si vous renommez persistence.xml, la validation échoue.

Lorsque ces situations gênantes se présentent, je trouve souvent de nombreuses «solutions» différentes comme la mienne, dont la plupart ne sont pas universellement applicables. 

Donc, voici ma "solution", que je pense être un hack pour contourner un bug:

Pour supprimer l'erreur "Le fichier persistence.xml n'a pas de contenu reconnu", désactivez le validateur JPA:

  • Élément de la listeSélectionnez l’élément de menu Projet> Propriétés> Préférences> Validation 
  • Élément de la liste Désactivez le validateur JPA pour la validation manuelle et la validation de la construction.

Vous devrez peut-être nettoyer et reconstruire. Votre kilométrage peut varier.

1
J Slick

Le problème a été résolu dans Indigo (publié en juin 2011), voir https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323#c24 et https: //issues.sonatype .org/browse/MECLIPSEWTP-11

Le fichier "persistence.xml n'a pas de contenu reconnu". Une erreur peut toujours apparaître, de manière aléatoire, lors de l'importation du projet ou du démarrage de Workspace, mais elle peut être corrigée avec une mise à jour de projet propre ou un projet maven. Ce sera corrigé dans Dali dans SR2.

0
Fred Bricon

Je suis tombé sur le même problème. Aller aux propriétés du projet -> Chemin de construction Java -> source, supprimer */. Attribut exclu Java de src/main/resources source Ajoutez ensuite META-INF/persistence.xml. Puis redémarrez Eclipse. Vous devriez persistence.xml sous Contenu JPA dans l'Explorateur de projets. Après cela, annulez vos modifications.

Eh bien, ce que je suggère semble stupide, mais comme par magie cela fonctionne. En passant, ma version Eclipse est 3.6.

0
Gursel Koca

Je l'ai corrigé en faisant glisser le dossier META-INF vers src/main/resources et en le faisant glisser vers src/test/resources. C'est tout ce qu'il m'a fallu pour résoudre le problème. J'ai essayé ci-dessus étant donné toutes les étapes mais aucune de celles-ci ne semble fonctionner pour moi et finalement celle-ci a fait l'affaire.

0
Amzi

J'ai eu le même problème. Ma solution: cliquez avec le bouton droit sur le fichier persistence.xml -> JPA-Tools -> Synchroniser la liste de classes. Après cela, c'était résolu.

0
Max

Où se trouve le fichier dans la structure de votre projet?

Pour référence, j'ai le mien dans maven-module-name/src/main/resources/META-INF /

0
Qwerky

Dans mon cas, c’est le plugin Maven qui a un bogue qui définit "Exclure" sur. dans le chemin de construction de votre dossier de ressources. Retrait. résolu le problème pour moi

0
Marc

vient de résoudre le problème en faisant ceci:

  1. dans schemaLocation, j'ai supprimé "h ttp: //Java.Sun.com/xml/ns/persistence/", ce qui le rend:

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

  1. j'ai ajouté <?xml version="1.0" encoding="UTF-8"?> en haut.

  2. je nettoie construire le projet. l'erreur est partie.

  3. j'ai ajouté le "h ttp: //Java.Sun.com/xml/ns/persistence/" à nouveau:

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

  1. je nettoie construire le projet. l'erreur n'est pas là.

  2. j'ai supprimé <?xml version="1.0" encoding="UTF-8"?> en haut.

  3. je nettoie construire le projet. l'erreur est toujours pas là.

j'espère que cela aidera quelqu'un dans le futur.

0
arvnq

J'ai eu le même problème, pour le faire disparaître, je devais m'assurer que cette ligne était la toute première ligne en haut du fichier (sans lignes vides ni espaces):

<?xml version="1.0" encoding="UTF-8"?>
0
Robert Hume

J'ai eu le même problème à quelques occasions et ce qui a fonctionné pour moi a été de copier le contenu du fichier, de le supprimer, de créer un nouveau fichier persistence.xml et de coller le contenu dans.

0

Ok ... une autre solution assez robuste qui a fonctionné pour moi puisque les plus grandes ne l’ont pas fait:

  • depuis que j'ai utilisé Mercurial et que je pouvais remonter facilement sans différences notables dans les versions actuelle et précédente, cela fonctionnait ainsi:

  • (a engagé des changements importants sans lien avec ce problème)

  • passage à la version précédente du référentiel
  • (auto-/refresh/-rebuild a fonctionné correctement)

Ce que j’ai reconnu, c’est que le problème est peut-être dû au fait que Java Builder n’a pas généré mes fichiers war/WEB-INF/classes/. Ce qui suit n'a pas fonctionné pour suivre ce sentier en le laissant construire mon projet:

  • désactiver/reconfigurer les validateurs, les constructeurs, les facettes (jusqu'à ce que seul le constructeur/la facette Java soit là)
  • renommer le persistence.xml ou le modifier de différentes manières

ce qui ne l'a pas aidé comme si un état interne ne pouvait pas être changé.

0
Andreas Dietrich

Difficile à dire depuis difficile à reproduire (votre persistence.xml est parfaitement valide) mais essayez peut-être de:

  • Nettoyer le projet ("Project> Clean" et Maven clean)
  • Forcez Eclipse à valider le fichier XML à nouveau (cliquez avec le bouton droit de la souris et sélectionnez Valider le fichier XML).
0
Pascal Thivent

J'ai eu la même erreur, mais résolu d'une manière différente.

Le problème est que META-INF doit être considéré comme un dossier source et, comme il était sous/ejbModule (le mien est un projet EJB), j'ai supposé qu'il se trouvait sur le chemin de génération. Et ce n'était pas. En fait, il était dans la liste "exclue" du chemin de génération. Donc, tout ce que j'ai fait était de cliquer avec le bouton droit sur le dossier META-INF dans la vue Explorateur de projets et de sélectionner INCLUDE dans le menu Chemin de construction. Ensuite, j'ai demandé à Eclipse de nettoyer le projet et tout allait bien à nouveau.

Meilleures salutations.

0
dgimenes