it-roy-ru.com

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

Я получаю следующую ошибку в Eclipse:

Файл 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

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

48
Mark Baijens

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

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

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

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

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

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

Работал на меня!

15
Rick

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

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

14
jadrake

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

13
willtardy

Превращение этой ошибки в предупреждение может устранить проблему, но не устранит основную проблему с плагином 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">

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

8
HDave

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

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

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

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

5
Kawu

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

2
Martin Trummer

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

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

Решение 

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

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

2
Harun ERGUL

Я использую 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 внизу, а не другие вкладки для параметров Общие, Соединение, Параметры, Свойства и т.д.

2
Chris Hinshaw

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

Правка

Итак, после маневрирования некоторых папок в фактическом формате каталогов Maven , он все еще не работал - но создание связанной папки под src/main/Java с именем META-INF, связанной с src/main/resources/META-INF, было решено.

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

2
Dustin

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
blackberry dev

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

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

1
viviansteller

У меня был 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:

  • Элемент спискаВыберите пункт меню «Проект»> «Свойства»> «Установки»> «Проверка». 
  • Элемент списка Отключите JPA Validator как для проверки вручную, так и для проверки сборки.

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

1
J Slick

Проблема была исправлена ​​в Indigo (выпущен в июне 2011 года), см. https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323#c24 и https: //issues.sonatype .org/browse/MECLIPSEWTP-11

«Файл persistence.xml не имеет распознанного содержимого». ошибка может по-прежнему появляться случайным образом при импорте проекта или запуске рабочей области, но ее можно исправить с помощью чистого проекта или обновления проекта maven. Это будет исправлено в Dali в SR2.

0
Fred Bricon

Я столкнулся с той же проблемой. Перейти к свойствам проекта -> Путь сборки Java -> источник, удалить */. Java исключил атрибут источника src/main/resources. Затем добавьте META-INF/persistence.xml. Затем перезапустите Eclipse. Вы должны сделать файл persistence.xml в JPA Content в Project Explorer. После этого отмените ваши изменения.

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

0
Gursel Koca

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

0
Amzi

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

0
Max

Где в структуре вашего проекта находится файл?

Для ссылки у меня есть мой в maven-module-name/src/main/resources/META-INF /

0
Qwerky

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

0
Marc

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

  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
arvnq

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

<?xml version="1.0" encoding="UTF-8"?>
0
Robert Hume

У меня была такая же проблема в нескольких случаях, и для меня работало, чтобы скопировать содержимое файла, удалить его и создать новый файл persistence.xml и вставить содержимое обратно.

0
willcodejavaforfood

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

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

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

  • переход на предыдущую версию репо
  • (auto-/refresh/-rebuild работает нормально)

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

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

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

0
Andreas Dietrich

Трудно сказать, так как трудно воспроизвести (ваш persistence.xml совершенно действителен), но, возможно, попробуйте:

  • Очистить проект («Проект> Очистить» и Maven clean)
  • Заставьте Eclipse снова проверить файл XML (щелкните правой кнопкой мыши и выберите «Проверить файл XML»).
0
Pascal Thivent

У меня была такая же ошибка, но я решил ее по-другому.

Дело в том, что META-INF должна рассматриваться как исходная папка, и, поскольку она находилась в/ejbModule (мой проект EJB), я предположил, что он находится на пути сборки. И это не было. На самом деле это было в списке «исключить» на пути сборки. Итак, все, что я сделал, - это щелкнул правой кнопкой мыши папку META-INF в представлении Project Explorer и выбрал INCLUDE в меню Build Path. Затем я попросил Eclipse очистить проект, и все снова было правильно.

С уважением.

0
dgimenes