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 ]

2 голосов
/ 15 декабря 2015

Я использую Eclipse Mars и у меня была точно такая же ошибка. Я должен был установить версию jpa для аспекта проекта. right click project -> Properties -> Project Facets Установите версию jpa в 2.1 в моем случае.

Примечание: Простая настройка фасета проекта jpa не устранит ошибку. Вам также необходимо настроить платформу.

Далее мне пришлось настроить платформу JPA. right click project -> Properties -> JPA. Измените платоформ на Hibernate 2.1 в моем случае.

Эта проблема также проявляется, когда вы открываете файл persistence.xml с помощью XML-редактора Persistence и у вас есть только одна вкладка Source внизу, а не другие вкладки для параметров Общие, Соединение, Параметры, Свойства и т. Д. *

1 голос
/ 30 сентября 2014

enter image description here Нет необходимости изменять что-либо в вашем XML-файле и не нужно добавлять XML в папку src. Поместите файл persistance.xml в папку META-INF, а затем поместите папку META-INF src / main / resource. Попробуйте следующий подход: Щелкните правой кнопкой мыши на project> Java Build path > Source Tab > ProjectName/src/main/resource > set Included(All) and Excluded(None)., затем очистите и постройте свой проект. Это будет работать для вас. Опробовал этот подход на RAD 7 & 8..5 и Eclipse.

1 голос
/ 11 декабря 2012

У меня было src/main/java/META-INF/persistence.xml, работающее нормально в Eclipse со встроенным Tomcat. Поскольку он не копировался в созданную Maven WAR, я переместил его в src/main/resources/META-INF.

Теперь src/main/resources/META-INF/persistence.xml не проверяется.

Если переименовать в xyz_persistence.xml, это подтверждает правильность.
Если переименовать в persistence.xml, проверка не пройдена.

Когда возникают такие досадные ситуации, я часто нахожу множество различных «решений», подобных моему, большинство из которых не универсально применимы.

Итак, вот мое «решение», которое я считаю хаком, чтобы обойти ошибку:

Чтобы устранить ошибку «Ошибка файла persistence.xml не имеет распознанного содержимого», отключите JPA Validator:

  • Элемент списка Выберите пункт меню Project> Properties> Preferences> Validation
  • Элемент списка Отключите JPA Validator как для проверки вручную, так и для проверки сборки.

Возможно, вам придется почистить и восстановить. Ваш пробег может отличаться.

1 голос
/ 09 сентября 2011

Я решил проблему, создав «символическую ссылку» в Eclipse.Итак, мой файл persistence.xml остается в src / main / resources / META-INF, как того ожидает Maven, а m2eclipse требует.Однако, чтобы исправить проблемы с Dali, создайте новый файл в src / main / java / META-INF, который ссылается на файл в src / main / resources / META-INF.Вы делаете это, нажимая «Дополнительные» параметры при создании нового файла и находя файл с помощью кнопки «Обзор ...».Обратите внимание, что это не приведет к созданию физического файла в папке META-INF, однако вам потребуется сама папка для создания ссылки.

Надеюсь, что это работает для вас.

0 голосов
/ 23 сентября 2011

У меня была та же проблема, чтобы ее устранить, я должен был убедиться, что эта строка была самой первой строкой в ​​верхней части файла (без начальных пустых строк или пробелов):

<?xml version="1.0" encoding="UTF-8"?>
0 голосов
/ 19 декабря 2014

Хорошо ... еще одно довольно надежное решение, которое работало для меня, поскольку самые лучшие из них не работали:

  • , так как я использовал Mercurial и мог легко вернуться без каких-либо заметных различий в текущей и последней версиях, он работал следующим образом:

  • ( совершил несколько важных изменений, весьма не связанных с этой проблемой )

  • переключение на предыдущую версию репо
  • ( авто- / обновление / -реконструкция прошла нормально )

Я понял, что проблема могла быть связана с тем, что Java Builder не генерировал мои war/WEB-INF/classes/ файлы . Следующее не помогло следовать этому следу, позволив ему построить мой проект:

  • отключение / реконфигурирование валидаторов, построителей, фасетов (пока не был только Java Builder / Facet)
  • переименование persistence.xml или редактирование его различными способами

, что не помогло, как будто некое внутреннее состояние не могло быть изменено.

0 голосов
/ 09 августа 2013

только что решил проблему, выполнив это:

  1. в schemaLocation, я удалил "h ttp: //java.sun.com/xml/ns/persistence/", сделав это:

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

  1. я добавил <?xml version="1.0" encoding="UTF-8"?> вверху.

  2. Я убираю, строю проект.ошибка исчезла.

  3. я снова добавил «h ttp: //java.sun.com/xml/ns/persistence/»:

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

  1. Я очищаю сборку проекта. Ошибок нет.

  2. я удален <?xml version="1.0" encoding="UTF-8"?> вверху.

  3. я убираю, строю проект. ошибки все еще нет.

надеюсь, что это поможет кому-то в будущем.

0 голосов
/ 12 июля 2013

Я исправил это, перетащив папку META-INF в src / main / resources и перетащив ее обратно в src / test / resources. Вот и все, что мне понадобилось, чтобы решить проблему. Я попробовал выше, учитывая все шаги, но ни один из них, похоже, не работает для меня, и, наконец, этот сделал свое дело.

0 голосов
/ 13 июня 2013

В моем случае это был плагин Maven с ошибкой, которая устанавливает «Исключить» на . в пути сборки для вашей папки ресурсов.Удаление . решило проблему для меня

0 голосов
/ 15 марта 2013

У меня была такая же проблема. Мое решение: щелкните правой кнопкой мыши файл persistence.xml -> JPA-Tools -> Синхронизировать список классов. После этого это было решено.

...