java - Eclipse no reconoce el contenido de persistence.xml
eclipselink vs hibernate (26)
Recibo el siguiente error en eclipse:
El archivo persistence.xml no tiene contenido reconocido.
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
Parece un error en m2eclipse en combinación con jpa.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=251323
Solucionado temporalmente al configurar la opción para mostrarlo como una advertencia en lugar de un error
¿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, entonces después de maniobrar algunas carpetas para que esté en un formato de directorio real de Maven , todavía no funcionó, pero creando una carpeta vinculada bajo src/main/java
llamada META-INF, vinculada a src/main/resources/META-INF
fue resuelto
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 a src/main/java
lo que no creo que sea exactamente correcto.
¿Dónde está ubicado el archivo en su estructura de proyecto?
Para ref, tengo el mío en maven-module-name / src / main / resources / META-INF /
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í están destinados a evitar un problema diferente en el que Maven quiere filtrar el archivo persistence.xml y, por lo tanto, le dice a Eclipse que lo ignore. here se explica una solución viable para ese problema 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 mismo mensaje de error EXACTO (que dentro y fuera de sí mismo le dice que el archivo persistence.xml ha sido localizado). Para mí, la solución fue cambiar el elemento XML de persistencia 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 desapareció y Dali instantáneamente cobró vida y ahora todo funciona. Espero que esto ayude a alguien algún día.
Descubrí cuál es el problema aquí ... JPA Facet está asumiendo que la carpeta META-INF está directamente debajo de una carpeta fuente. Si está utilizando un proyecto Maven, es probable que tenga algo como src / main / resources o src / test / resources. Si su persistence.xml está bajo 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 ciertamente es un dolor ... y puedo ver muchas situaciones que esto no funcionará bien.
Difícil de decir, ya que es difícil de reproducir (su persistence.xml
es perfectamente válida) pero quizás intente:
- Limpiar el proyecto (tanto un "Proyecto> Limpiar" como un Maven
clean
) - Forzar Eclipse para que valide el archivo XML de nuevo (haga clic con el botón derecho y seleccione Validar archivo XML).
El error ha reaparecido para ciertas versiones de Indigo (3.7). Ver aquí: https://bugs.eclipse.org/bugs/show_bug.cgi?id=357810
Haga clic derecho en proyecto -> Maven -> Actualizar configuración del proyecto ...
Esto podría destruir ciertas entradas de compilación, muy molesto, así que solo hazlo cuando cambies a Maven deps.
Para solucionar el problema del mensaje persistence.xml hasta que se libere el parche, debe limpiar el proyecto en muchas operaciones, ya que incluso configurar el nivel de error para "ignorar" no funciona . Esto es un fastidio completo.
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.
En mi caso, fue el plugin Maven el que tiene un error que establece "Excluir" . en la ruta de compilación para su carpeta de recursos. Removiendo resuelto el problema para mí
Este problema ocurre si
- Convierta un proyecto JPA a un proyecto Maven o
- Agregue la faceta JPA a un proyecto Maven.
La solucion es
- Seleccione Windows> Preferencias> Validación
- Deshabilite el validador de JPA para validación manual y validación de compilación
Después de cambiar estas configuraciones, entonces limpie su proyecto.
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
Establecer la versión de jpa en 2.1 en mi caso.
Nota: la configuración de la faceta del proyecto jpa 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 al abrir persistence.xml con el Editor de persistencia XML y solo tiene una sola pestaña de Source
en la parte inferior y no las otras pestañas para General, Conexión, Opciones, Propiedades, etc.
He tenido el mismo problema en algunas ocasiones y lo que funcionó para mí fue copiar el contenido del archivo, eliminarlo y crear un nuevo archivo persistence.xml y volver a pegar los contenidos.
He tenido 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.
Lo arreglé yendo a Proyecto - Propiedades - Persistencia de Java: y luego estableciendo la "Carpeta de origen" en la sección "Metamodel canónico (JPA 2.0)" a: "src / generated / resources"
Lo solucioné arrastrando la carpeta META-INF a src / main / resources y arrastrándola 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.
Me encontré con el mismo problema. Ir a propiedades del proyecto -> ruta de compilación de Java -> fuente, eliminar * / .java excluido atributo de src / main / resources source. 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.
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 con 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).
luego limpia y construye tu proyecto. Funcionará para ti. Intenté este enfoque en RAD 7 y 8..5 y Eclipse.
Ok ... otra solución bastante robusta que funcionó para mí, ya que las más importantes no:
ya que utilicé Mercurial y pude volver fácilmente sin diferencias notables en la versión actual y las últimas versiones, funcionó de esta manera:
( cometido algunos cambios importantes que no están relacionados con este problema )
- cambiar a la versión anterior del repositorio
- ( auto / refresh / -rebuild funcionó bien )
Lo que reconocí fue que el problema pudo deberse al hecho de que Java Builder no generó mi war/WEB-INF/classes/
files . Lo siguiente no funcionó para seguir este camino al dejarlo construir mi proyecto:
- Inhabilitando / reconfigurando Validadores, Constructores, Facetas (hasta que solo el Java Builder / Facet estuvo allí)
- cambiar el nombre de
persistence.xml
o editarlo de varias maneras
lo cual no lo ayudó como si un estado interno no pudiera cambiarse.
Resolví el problema creando un "enlace simbólico" en Eclipse. Por lo tanto, mi archivo persistence.xml permanece en src / main / resources / META-INF como lo espera Maven y requiere m2eclipse. 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 eso te funcione.
Solucioné el problema de la siguiente manera (estoy usando RAD v8.5.1):
- Windows -> Preferencias -> Validación
- Desplácese hasta "JPA Validator" y haga clic en las elipsis en Configuración.
- Haga clic en el botón "Agregar Incluir Grupo ...".
- Haga clic en el nuevo Grupo de inclusión que apareció para resaltarlo.
- Haga clic en el botón "Agregar regla ...".
- Aparece un menú de diálogo. Haga clic en el botón de opción "Carpeta o nombre de archivo" y haga clic en "Siguiente".
- 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 su espacio de trabajo.
- Haga clic en "Finalizar".
- Haga clic en "Aceptar". Esto provocará una compilación completa.
- El error desaparecerá
Tenía src/main/java/META-INF/persistence.xml
funcionando bien en Eclipse con Tomcat integrado. Como no se estaba copiando en WAR construido por Maven, lo moví a src/main/resources/META-INF
.
Ahora src/main/resources/META-INF/persistence.xml
no validará.
Si cambia el nombre a xyz_persistence.xml, valida bien.
Si cambia el nombre a persistence.xml, no puede validar.
Cuando surgen estas situaciones molestas, a menudo encuentro numerosas "soluciones" diferentes como la mía, la mayoría de las cuales no son universalmente aplicables.
Entonces, aquí está mi "solución", que creo que es un truco para solucionar un error:
Para eliminar el error "error persistence.xml no tiene el contenido reconocido", desactive el Validador JPA:
- Elemento de la lista Seleccione la opción de menú Proyecto> Propiedades> Preferencias> Validación
- Elemento de lista Deshabilite el Validador de JPA para la validación manual y la validación de compilación.
Es posible que necesite limpiar y reconstruir. Su experiencia puede ser diferente.
Tenía el mismo problema con el error
El archivo persistence.xml no tiene contenido reconocido
Corregido al editar el archivo en eclipse, cualquier edición funcionará. Y después de guardar el error se escapó.
Tuve el mismo error, pero lo resolví de una manera diferente.
La cuestión 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.
Tuve el mismo problema, para que desapareciera, tenía que asegurarme de que esta línea fuera la primera línea en la parte superior del archivo (sin líneas o espacios vacíos):
<?xml version="1.0" encoding="UTF-8"?>
Tuve 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 del proyecto -> menú desplegable "Configuración" -> establecer esto como "Configuración mínima de JPA 2.0"
acabo de resolver el problema al hacer esto:
- en schemaLocation, eliminé "h ttp: //java.sun.com/xml/ns/persistence/" y lo convertí en:
xsi: schemaLocation = "http://java.sun.com/xml/ns/persistence persistence_2_0.xsd"
Agregué
<?xml version="1.0" encoding="UTF-8"?>
en la parte superior.Limpio construyo el proyecto. el error desapareció
Agregué el "h ttp: //java.sun.com/xml/ns/persistence/" de nuevo:
xsi: schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd "
Limpio construyo el proyecto. error no está allí.
borré
<?xml version="1.0" encoding="UTF-8"?>
en la parte superior.Limpio construyo el proyecto. el error todavía no está allí.
Espero que esto ayude a alguien en el futuro.
<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">
¡Trabajó para mi!