2010-09-13 22 views
45

Im que consigue el error siguiente en Eclipse:Eclipse no reconoce el contenido de persistence.xml

archivo La persistence.xml no han reconocido contenido.

Mi archivo persistence.xml funciona muy bien en mi aplicación pero eclipse me sigue dando este error. Lo obtuve después de mover el archivo y actualizar la configuración de mi proyecto con m2eclipse. No cambié el archivo en sí. Alguien sabe cómo resolver esto?

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> 

Actualizar

se parece a un error en m2eclipse en combinación con JPA.

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

temporalmente resueltos mediante el establecimiento de la opción de mostrar como una advertencia en lugar de un error

+1

Pruebe Dali 3.0.x (parte del paquete Java EE Indigo). Este problema se ha solucionado en gran medida en el lanzamiento de Indigo. Existe un problema pendiente que puede requerir la limpieza de un proyecto ... después de la creación/importación del proyecto, pero ya no es necesario modificar los metadatos del proyecto para solucionar el problema y toda la funcionalidad de Dali debería funcionar. Por favor comente sobre el error mencionado anteriormente si tiene algún problema. –

+1

La actualización del proyecto maven no me solucionó, supongo que una limpieza es parte de esto. apagar la faceta JPA hizo desaparecer el error. –

Respuesta

27

he arreglado el problema de la siguiente manera (estoy usando RAD v8.5.1):..

  1. Windows -> Preferencias -> Validación
  2. vaya a "APP Validador" y haga clic en los puntos suspensivos en Configuración.
  3. Haga clic en el botón "Agregar Incluir Grupo ...".
  4. Haga clic en el nuevo Grupo de inclusión que parece resaltarlo.
  5. Haga clic en el botón "Agregar regla ...".
  6. Aparecerá un menú de diálogo. Haga clic en el botón de opción "Carpeta o nombre de archivo" y haga clic en "Siguiente".
  7. Haga clic en "Buscar carpeta ..." y vaya a su directorio src (en mi caso, era "src/main/resources") dentro de su proyecto (mi proyecto era .war en una aplicación de varios módulos) en tu espacio de trabajo
  8. Haga clic en "Finalizar".
  9. Haga clic en "Aceptar". Esto provocará una compilación completa.
  10. El error desaparecerá.
+3

nice work chris ...! – Chella

+0

Gracias @Chris, tu solución también me ha funcionado, pero no entiendo por qué usamos un clude Group si el objetivo era excluir el directorio del filtrado. –

0

paradero en su estructura del proyecto se encuentra el archivo?

Por ref, yo tengo la mía en maven-nombre-módulo/src/main/resources/META-INF/

+0

mina está en la misma ubicación (src/main/resources/META-INF /). Eclipse puede encontrar el archivo pero da el mensaje de error en el archivo. –

0

Es difícil de decir, ya difícil de reproducir (su persistence.xml es perfectamente válido), pero tal vez trate de:

  • Limpiar el proyecto (tanto un "proyecto> Limpiar" y una Maven clean)
  • Fuerza Eclipse para validar el archivo XML de nuevo (botón derecho del ratón y seleccione validar archivo XML).
+0

Eso no funciona lamentablemente –

+0

@Mark Lo siento por eso. Otra idea: intente eliminar el proyecto (solo desde eclipse) y volver a importarlo. –

+0

Parece que es un error entre m2eclipse y eclipse jpa facet. Configuré una advertencia como una solución rápida por ahora. –

0

que he tenido el mismo problema en un par de ocasiones y lo que funcionó para mí fue copiar el contenido del archivo, eliminarlo y crear un nuevo archivo persistence.xml y pegar el contenido de nuevo.

+0

no funciona para mí, lamentablemente –

+0

@ Marcos - oh BUMMER :( – willcodejavaforfood

14

Descubrí cuál es el problema aquí ... JPA Facet asume que la carpeta META-INF está directamente debajo de una carpeta de origen. Si está utilizando un proyecto Maven, es probable que tenga algo como src/main/resources o src/test/resources. Si su persistence.xml está debajo de estas carpetas, se quejará. Si crea una nueva carpeta de origen (llámela "jpa") y cree un META-INF/persistence.xml allí, entonces la encontrará con éxito. (También tuve que hacer un proyecto limpio/cerrado/abierto)

Esto es ciertamente un dolor ... y puedo ver muchas situaciones que esto no funcionará bien.

+2

Sobre la base de las referencias aquí: http://www.eclipse.org/forums/index.php?t=msg&goto=619384&S=e5e8753226e70df88f8b0f4e2266e3d1#msg_619384 yo era capaz para hacer que esto funcione moviendo el src/main/resources al primer pedido/exportación en la ruta de compilación. Todavía me sale un error de que persistence.xml no es válido bajo src/main/resources, pero esto puede ignorarse. Creo que bajo la pestaña de preferencias de Java Persistence -> Errores/advertencias -> Proyecto -> "Contenido no válido (sin nodo raíz):" – jadrake

+0

¿Cuál es la razón por la que establece la ruta de compilación src/main/resource en primer lugar en Order/Export si aún recibo el error? Y una nueva carpeta fuente no es una solución para mí, ya que quiero mantener mi estructura de archivos actual porque es estándar para maven. Pero gracias por señalar que el problema está en la faceta JPA. Si estoy en lo cierto, el eclipse equipo todavía culpa a m2eclipse: PAG. –

8

Convertir este error en una advertencia puede hacer que el problema desaparezca, pero no solucionará el problema subyacente con el complemento Eclipse Dali. También significará que la estructura de JPA extremadamente útil y las vistas de Detalles de JPA no funcionarán.

El enlace ofrecido por OP y el enfoque de la mayoría de las respuestas aquí en realidad están destinados a evitar un problema diferente en el que Maven quiere filtrar el archivo persistence.xml y le dice a Eclipse que lo ignore. Una solución viable para ese problema se explica en here e implica la eliminación de la exclusión: '**' de la entrada src/main/resources en el classpath en las propiedades del proyecto.

Volviendo a la pregunta original de OP, tuve este EXACTO el mismo mensaje de error (que dentro y fuera de sí mismo le dice que se ha localizado el archivo persistence.xml). Para mí la solución era cambiar el elemento de persistencia XML de esto:

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

a esto:

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

Una vez cambiado, el error fue y Dalí al instante volvió a la vida y ahora todo funciona. Espero que esto ayude a alguien algún día.

+0

Ya estoy usando la versión 2.0, por lo que no funciona para mí, lamentablemente. –

+0

De hecho, cambié a 1.0 solo para verificar y Dali aún funcionaba. Debe haber sido que al guardar el archivo en sí, se activa a Dali de alguna manera. Esto es todo muy escamoso. – HDave

0

Me encontré con el mismo problema. Ir a propiedades del proyecto -> Ruta de compilación de Java -> fuente, eliminar * / .java excluyó el atributo del origen src/main/resources. A continuación, agregue META-INF/persistence.xml. Luego reinicia eclipse. Debe persistence.xml en Contenido JPA en Project explorer. Después de eso, revierte tus cambios.

Bueno, lo que sugiero parece estúpido, pero mágicamente funciona. Por cierto, mi versión de eclipse es 3.6.

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

¡Funcionó para mí!

+0

Esto también funcionó para mí, sin embargo, no tengo idea de por qué, dado que veo muchos ejemplos sin el espacio de nombre xml especificado, –

+0

que acabo de copiar y pegar funcionó mágicamente. – virtual82

2

i fijo esto de ir a Project - Propiedades - Java Persistence: y después de ajustar la "Carpeta de origen" en el "metamodelo Canonical (JPA 2.0)" sección a: "src/generados/recursos"

11

I tenía este mismo problema en Eclipse 3.6 (Helios). La causa fue que JPA Facet se configuró en la versión 1.0 de JPA, pero mi archivo persistence.xml especificaba la versión 2 de JPA. Cambié la faceta de JPA a la versión 2.0 y el problema desapareció. (Proyecto -> Propiedades -> Facetas de proyecto -> "Configuración" desplegable -> establecer este "Configuración mínima JPA 2.0" a

+0

eclipse había importado mi proyecto y lo configuró como JPA 1.0. Tuve que actualizar manualmente la configuración de eclipse a JPA 2.0 y esto resolvió el problema para mí también – Arran

30

Had mismo problema con el error

El persistence.xml archivo no haber reconocido el contenido

fijo por el archivo de edición en eclipse, cualquier edición va a hacer. Y después de salvar el error se escapó.

+4

+1, también hizo el truco para mí. –

+3

+1, ¿Qué es el eclipse? – Rannick

+0

Primero hice una edición menor y no pasó nada. Pero luego hizo una edición más grande (eventualmente revertir los cambios), y solo entonces el error desapareció. – alterfox

1

me dieron el tema fijado por la creación de un "enlace simbólico" en Eclipse. Por lo tanto, mi archivo persistence.xml permanece en src/main/re fuentes/META-INF como Maven espera y m2eclipse requiere. Sin embargo, para solucionar los problemas de Dali, cree un nuevo archivo en src/main/java/META-INF que enlace con el de src/main/resources/META-INF. Para ello, presiona las opciones "Avanzadas" al crear el nuevo archivo y localizar el archivo con el botón "Buscar ...". Tenga en cuenta que esto no creará un archivo físico en la carpeta META-INF, sin embargo, necesita la carpeta para crear el enlace.

Espero que funcione para usted.

0

El problema se ha solucionado en Indigo (lanzado en junio de 2011), consulte https://bugs.eclipse.org/bugs/show_bug.cgi?id=251323#c24 y https://issues.sonatype.org/browse/MECLIPSEWTP-11.

El "archivo persistence.xml no tiene contenido reconocido". el error aún puede aparecer, aleatoriamente, en la importación del proyecto o en el inicio del área de trabajo, pero puede corregirse con una actualización del proyecto o proyecto limpio. Esto se solucionará en Dali en SR2.

0

tuve el mismo problema, a hacer que se vaya que tenía que asegurarse de que esta línea fue la primera línea en la parte superior del archivo (sin líneas principales vacíos o espacios):

<?xml version="1.0" encoding="UTF-8"?> 
5

El error ha reaparecido para ciertas versiones de Indigo (3.7). Ver aquí: https://bugs.eclipse.org/bugs/show_bug.cgi?id=357810

proyecto botón derecho del ratón -> Maven -> Configuración de la actualización del Proyecto ...

Esto podría destruir ciertas entradas BuildPath, muy molesto, por lo que sólo hacerlo cuando se cambia deps Maven.

Para solucionar el mensaje persistence.xml hasta que se libere el parche, es necesario limpiar el proyecto en muchas operaciones ya que incluso ajuste el nivel de error de "ignorar" no funciona. Esto es un fastidio completo.

2

¿Alguna actualización sobre esto? Este sigue siendo un problema, parece correcto? Si creo un proyecto JPA, conviértalo en un proyecto de Maven, aparece el error y no me puedo deshacer de él con ninguno de los métodos recomendados.

Editar

Ok así que después de maniobrar alrededor de algunas carpetas por lo que su real en un Maven directory format, todavía no funcionaba - pero la creación de una carpeta vinculada bajo src/main/java llamado META-INF, vinculado a src/main/resources/META-INF se resolvió .

Crear un proyecto Maven y agregar la faceta JPA también funciona, pero solo porque la faceta JPA agrega el archivo META-INF y persistence.xml al src/main/java, lo que no creo que sea exactamente correcto.

0

Tuve el mismo error, pero lo resolví de otra manera.

El asunto es que META-INF debe considerarse una carpeta fuente, y como estaba bajo/ejbModule (el mío es un proyecto EJB) supuse que estaba en la ruta de compilación. Y no fue así. En realidad, estaba en la lista "excluir" en la ruta de compilación. Entonces, todo lo que hice fue hacer clic con el botón derecho en la carpeta META-INF en la vista del Explorador de proyectos y seleccionar INCLUDE en el menú Crear ruta. Luego le pedí a Eclipse que limpiara el proyecto y todo estaba bien otra vez.

Atentamente.

1

Tenía src/main/java/META-INF/persistence.xml funcionando bien en Eclipse con Tomcat incorporado. Como no se estaba copiando en WAR construido por Maven, lo moví al src/main/resources/META-INF.

Ahora src/main/resources/META-INF/persistence.xml no se validará.

Si cambia el nombre a xyz_persistence.xml, valida bien.
Si cambia el nombre a persistence.xml, no se puede validar.

Cuando surgen estas situaciones molestas, a menudo encuentro muchas "soluciones" diferentes como la mía, la mayoría de las cuales no son universalmente aplicables.

Por lo tanto, aquí está mi "solución", que creo que es un truco para conseguir alrededor de un insecto:

Para eliminar el error "persistencia.archivo XML no han reconocido el contenido de error", desactivar la APP Validador:

  • elemento de la lista Seleccionar elementos de menú Proyecto> Propiedades> Preferencias> Validación
  • elemento de la lista Desactivar la APP Validador tanto para la validación manual y Construir . validación

Es posible que tenga que limpiar y reconstruir su experiencia puede variar

+0

Caray, acabo de encontrar mi propia publicación acerca de Este problema molesto, que ahora ha ocurrido en Eclipse Kepler. Persistence.xml con el proveedor de eclipselink funcionaba bien. Agregué las herramientas de Hibernate para tener un editor de consultas, pero luego eliminé las cosas de Hibernate. Ahora lo estúpido no valide Persistence.xml, que no se modificó en absoluto. Además, NO es un proyecto de Maven. –

+0

El "arreglo" fue para asegurar que src/META-INF está en la ruta de compilación ... aunque persistence.xml y JPA * tenían * he estado trabajando antes de jugar con las herramientas de Hibernate. –

0

Tuve el mismo problema. Mi solución: haga clic con el botón derecho en el archivo persistence.xml -> Herramientas JPA -> Sincronizar lista de clases. Después de eso fue resuelto.

0

En mi caso, fue el plugin de Maven el que tiene un error que establece "Excluir" en . en la ruta de compilación para su carpeta de recursos. Eliminando . resolvió el problema para mí

0

Lo arreglé arrastrando la carpeta META-INF a src/main/resources y lo arrastré a src/test/resources. Eso fue todo lo que necesité para solucionar el problema. Intenté arriba dado todos los pasos, pero ninguno de ellos parece estar funcionando para mí y finalmente este hizo el truco.

0

acabamos de resolver el problema al hacer esto:

  1. en schemaLocation, yo borrado "h ttp: //java.sun.com/xml/ns/persistence/" por lo que es:

xsi: schemaLocation = "http://java.sun.com/xml/ns/persistence persistence_2_0.xsd"

  1. i añadió <?xml version="1.0" encoding="UTF-8"?> en la parte superior.

  2. limpio la construcción del proyecto. el error desapareció

  3. Agregué el "h ttp: //java.sun.com/xml/ns/persistencia /" de nuevo:

xsi: schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

  1. i generación limpia el proyecto. error no está ahí.

  2. yo borrado <?xml version="1.0" encoding="UTF-8"?> en la parte superior.

  3. puedo limpiar la construcción del proyecto. el error de todavía no existe.

Espero que esto ayude a alguien en el futuro.

1

enter image description here No es necesario cambiar nada en el archivo xml y no es necesario agregar xml en la carpeta src. Coloque su archivo persistance.xml en la carpeta META-INF y luego coloque la carpeta META-INF src/main/resource. Pruebe el siguiente enfoque: Haga clic con el botón derecho en project> Java Build path > Source Tab > ProjectName/src/main/resource > set Included(All) and Excluded(None). y luego limpie y cree su proyecto. Funcionará para ti. Intenté este enfoque en RAD 7 & 8..5 & Eclipse.

0

Ok ... otra solución más robusta que trabajó para mí desde los más superiores cuáles no lo hizo:

  • que no uso Mercurial y podría volver fácilmente sin diferencias notables en el actual y el último versiones que funcionaba de esta manera:

  • (confirmado algunos cambios importantes en lugar no relacionadas con este problema)

  • cambiar a previa Versión de recompra
  • (auto/refresco/-rebuild funcionó muy bien)

Lo reconocí era, que el problema puede haber sido debido al hecho de que el constructor de Java no generó mi war/WEB-INF/classes/ archivos. El siguiente no funcionó para seguir este sendero en dejar que construir mi proyecto:

  • deshabilitar/reconfiguración de validadores, Constructores, Facetas (hasta que sólo el Java Constructor/Faceta estaba allí)
  • cambiar el nombre del persistence.xml o editarlo de varias maneras

que no lo ayudaron como si un estado interno no se pudiera cambiar.

+0

Merece la pena señalar que hice algunos cambios importantes antes, donde cambié el nombre del paquete en el que estaba el archivo '* .gwt.xml'. –

2

Este problema se produce si

  • convertir un proyecto APP a un proyecto Maven o
  • Añadir la faceta APP a un proyecto Maven.

La solución es

  • Seleccionar Windows> Preferencias> Validación
  • Desactivar la APP Validador tanto para la validación manual y Construir la validación

Después de cambiar estos ajustes, a continuación, limpia tu proyecto.

2

Estoy usando eclipse mars y tuve este mismo error exacto. Lo que tuve que hacer fue 1 establecer la versión de jpa para la faceta del proyecto. right click project -> Properties -> Project Facets Establezca la versión de jpa en 2.1 en mi caso.

Nota: Sólo la configuración de la faceta proyecto de APP no eliminará el error. También necesita configurar la plataforma.

Luego tuve que configurar la plataforma JPA. right click project -> Properties -> JPA. Cambiar platoform para que sea Hibernate 2.1 en mi caso.

Este problema también se manifiesta cuando se abra la persistence.xml con el Editor XML Persistencia y sólo tiene una única pestaña Source en el fondo y no las otras pestañas para General, Conexión, Opciones, Propiedades etc.

Cuestiones relacionadas