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
J'ai corrigé le problème de la manière suivante (j'utilise RAD v8.5.1):
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.
<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!
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.
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"
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.
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.
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"
Ce problème se produit si vous
La solution est
Après avoir modifié ces paramètres, nettoyez votre projet.
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.
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.
Pas 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.
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.
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:
Vous devrez peut-être nettoyer et reconstruire. Votre kilométrage peut varier.
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.
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.
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.
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.
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 /
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
vient de résoudre le problème en faisant ceci:
xsi: schemaLocation = "http://Java.Sun.com/xml/ns/persistence persistence_2_0.xsd"
j'ai ajouté <?xml version="1.0" encoding="UTF-8"?>
en haut.
je nettoie construire le projet. l'erreur est partie.
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 "
je nettoie construire le projet. l'erreur n'est pas là.
j'ai supprimé <?xml version="1.0" encoding="UTF-8"?>
en haut.
je nettoie construire le projet. l'erreur est toujours pas là.
j'espère que cela aidera quelqu'un dans le futur.
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"?>
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.
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)
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:
persistence.xml
ou le modifier de différentes manièresce qui ne l'a pas aidé comme si un état interne ne pouvait pas être changé.
Difficile à dire depuis difficile à reproduire (votre persistence.xml
est parfaitement valide) mais essayez peut-être de:
clean
)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.