Eclipse не распознает содержимое файла persistence.xml - PullRequest
48 голосов
/ 13 сентября 2010

Я получаю следующую ошибку в затмении:

Файл persistence.xml не имеет распознанного содержимого.

Мой файл persistence.xml прекрасно работает в моем приложении, но eclipse продолжает выдавать мне эту ошибку. Я получил это после перемещения файла и обновления конфигурации моего проекта с помощью m2eclipse. Я не менял сам файл. Кто-нибудь знает, как это решить?

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>

Обновление

Похоже на ошибку в m2eclipse в сочетании с jpa.

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

Временно решается установкой опции показывать это как предупреждение вместо ошибки

Ответы [ 27 ]

32 голосов
/ 13 декабря 2012

Я исправил проблему следующим образом (я использую RAD v8.5.1):

  1. Windows -> Настройки -> Проверка
  2. Прокрутите вниз до «JPA Validator» и нажмите на «Эллипсы» в разделе «Настройки».
  3. Нажмите кнопку «Добавить группу ...».
  4. Нажмите на появившуюся группу включения, чтобы выделить ее.
  5. Нажмите кнопку «Добавить правило ...».
  6. Появляется диалоговое меню. Нажмите кнопку-переключатель «Имя папки или файла» и нажмите «Далее».
  7. Нажмите «Обзор папки ...» и перейдите в каталог src (в моем случае это был «src / main / resources») в вашем проекте (мой проект был .war в многомодульном приложении) в ваше рабочее пространство.
  8. Нажмите «Готово».
  9. Нажмите «ОК». Это предложит полную сборку.
  10. Ошибка исчезнет.
30 голосов
/ 08 апреля 2011

Была такая же проблема с ошибкой

Файл persistence.xml не имеет распознанного содержимого

Исправлено редактированием файла в eclipse, подойдет любое редактирование. И после сохранения ошибка ушла.

15 голосов
/ 04 декабря 2010
14 голосов
/ 06 октября 2010

Я выяснил, в чем здесь проблема ... Фасет JPA предполагает, что папка META-INF находится непосредственно в исходной папке.Если вы используете проект Maven, скорее всего, у вас есть что-то вроде src / main / resources или src / test / resources.Если ваш persistence.xml находится в этих папках, он будет жаловаться.Если вы создадите новую исходную папку (назовите ее «jpa») и создадите в ней файл META-INF / persistence.xml, то он успешно ее найдет.(Я также должен был сделать чистый / закрыть / открыть проект)

Это, конечно, боль .... и я вижу много ситуаций, которые не будут работать хорошо.

13 голосов
/ 23 марта 2011

У меня была такая же проблема в Eclipse 3.6 (Helios).Причиной было то, что для JPA Facet было установлено значение JPA Version 1.0, однако в моем файле persistence.xml была указана версия JPA 2. Поэтому я изменил JPA Facet на версию 2.0, и проблема исчезла.(Проект -> Свойства -> Фасеты проекта -> раскрывающийся список «Конфигурация» -> установите для этого параметра «Минимальная конфигурация JPA 2.0»

8 голосов
/ 18 ноября 2010

Превращение этой ошибки в предупреждение может устранить проблему, но не устранит основную проблему с плагином Eclipse Dali. Это также будет означать, что чрезвычайно полезные представления JPA Structure и JPA Details не будут работать.

Ссылка, предлагаемая OP, и подход большинства ответов здесь на самом деле предназначены для решения другой проблемы, в которой Maven хочет отфильтровать файл persistence.xml и, таким образом, сообщает Eclipse, чтобы он игнорировался. Жизнеспособный обходной путь для этой проблемы объясняется здесь и включает удаление исключенного: '**' из записи src / main / resources в classpath в свойствах проекта.

Возвращаясь к первоначальному вопросу OP, у меня было ТОЧКО такое же сообщение об ошибке (которое само по себе говорит о том, что файл persistence.xml был найден). Для меня решение было изменить элемент постоянства XML с этого:

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

к этому:

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

Однажды изменившись, ошибка исчезла, и Дали мгновенно ожил, и теперь все просто работает. Надеюсь, это когда-нибудь кому-нибудь поможет.

5 голосов
/ 04 января 2012

Ошибка появилась для некоторых версий Indigo (3.7).См. Здесь: https://bugs.eclipse.org/bugs/show_bug.cgi?id=357810

Щелкните правой кнопкой мыши проект -> Maven -> Обновить конфигурацию проекта ...

Этот может уничтожить определенные записи buildpath и / или развертываниесборка, очень раздражает, так что делайте это только при изменении Maven deps.

Чтобы обойти сообщение persistence.xml до выхода патча, вам нужно очистить проект на многих операциях как установка уровня ошибки "игнорировать" не работает .Это полный облом.

2 голосов
/ 14 марта 2011

Я исправил это, перейдя в Project - Properties - Java Persistence: а затем в разделе «Исходная папка» в разделе «Каноническая метамодель (JPA 2.0)» установил: «src / generate / resources»

2 голосов
/ 23 июля 2015

Эта проблема возникает, если вы

  • преобразовали проект JPA в проект Maven или
  • добавили фасет JPA в проект Maven.

Решение:

  • Выберите Windows> Предпочтения> Проверка
  • Отключите JPA Validator для ручной проверки и проверки сборки

После изменения этих настроек очистите ваш проект.

2 голосов
/ 14 июля 2012

Есть какие-нибудь обновления по этому поводу? Это все еще проблема, это кажется правильным? Если я создаю проект JPA, преобразую его в проект Maven, появляется ошибка, и я не могу избавиться от нее ни одним из рекомендуемых методов.

Редактировать

Хорошо, так что после маневрирования некоторых папок в фактическом формате каталогов Maven он все равно не работает - но создает связанную папку под src/main/java с именем META-INF, связанную с src/main/resources/META-INF это было решено.

Создание проекта Maven и добавление фасета JPA также работает, но только потому, что фасет JPA добавляет файл META-INF и файл persistence.xml в src/main/java, что, на мой взгляд, не совсем правильно.

...