web-dev-qa-db-ja.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>

更新

Jpaと組み合わせたm2Eclipseのバグのように見えます。

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=25132

エラーではなく警告として表示するようにオプションを設定して一時的に解決しました

48
Mark Baijens

次の方法で問題を修正しました(RAD v8.5.1)を使用しています):

  1. Windows->設定->検証
  2. 「JPA Validator」までスクロールダウンし、「設定」の下にある楕円をクリックします。
  3. [インクルードグループの追加...]ボタンをクリックします。
  4. 表示された新しいインクルードグループをクリックして強調表示します。
  5. [ルールの追加...]ボタンをクリックします。
  6. ダイアログメニューが表示されます。 「フォルダまたはファイル名」ラジオボタンをクリックして、「次へ」をクリックします。
  7. 「フォルダの参照...」をクリックして、ワークスペースのプロジェクト(私のプロジェクトはマルチモジュールアプリの.warでした)内のsrcディレクトリ(私の場合は「src/main/resources」)に移動します。
  8. 「完了」をクリックします。
  9. 「OK」をクリックします。これにより、フルビルドが要求されます。
  10. エラーはなくなります。
32
Chris Harris

エラーと同じ問題がありました

Persistence.xmlファイルに認識されたコンテンツがありません

Eclipseでファイルを編集することにより修正され、すべての編集が実行されます。そして、エラーを保存した後に逃げました。

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

私のために働いた!

16
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バージョン1.0に設定されていたが、persistence.xmlファイルでJPAバージョン2を指定していたため、JPA Facetをバージョン2.0に変更すると問題はなくなりました。 ([プロジェクト]-> [プロパティ]-> [プロジェクトファセット]-> [構成]ドロップダウン-> [最小JPA 2.0構成]に設定します)

13
willtardy

このエラーを警告に変えると、問題がなくなる可能性がありますが、Eclipse Daliプラグインの根本的な問題は修正されません。また、非常に便利なJPA構造およびJPA詳細ビューが機能しないことも意味します。

OPが提供するリンクとここでのほとんどの回答のアプローチは、実際にはMavenがpersistence.xmlファイルをフィルター処理して、Eclipseにそれを無視するように指示するという別の問題を回避するためのものです。この問題の実行可能な回避策は here で説明されており、プロジェクトプロパティのクラスパスのsrc/main/resourcesエントリから除外された「**」を削除する必要があります。

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=35781

プロジェクトを右クリック-> Maven->プロジェクト構成の更新...

このmightは、特定のビルドパスエントリおよび/またはデプロイメントアセンブリを破壊します。これは非常に迷惑なので、Maven depを変更する場合にのみ行ってください。

パッチがリリースされるまでpersistence.xmlメッセージを回避するには、多くの操作でプロジェクトをクリーンアップするエラーレベルを「無視」に設定しても動作しない必要があります。 。これは完全に残念です。

5
Kawu

Project-Properties-Java Persistence:に移動し、 "Canonical metamodel(JPA 2.0)"セクションの "Source Folder"を "src/generated/resources"に設定することでこれを修正しました。

2
Martin Trummer

この問題は次の場合に発生します

  • JPAプロジェクトをMavenプロジェクトに変換する、または
  • JPAファセットをMavenプロジェクトに追加します。

解決策は

  • Windows> Preferences> Validationを選択します
  • 手動検証とビルド検証の両方でJPAバリデーターを無効にします

これらの設定を変更したら、プロジェクトをクリーンアップします。

2
Harun ERGUL

私はEclipse marsを使用していますが、これとまったく同じエラーが発生しました。私がしなければならなかったことは、プロジェクトファセットのjpaのバージョンを1セットに設定することでした。 right click project -> Properties -> Project Facets私の場合、jpaのバージョンを2.1に設定します。

注: jpaプロジェクトファセットを構成しても、エラーは削除されません。プラットフォームも構成する必要があります。

次に、JPAプラットフォームを構成する必要がありました。 right click project -> Properties -> JPA。私の場合、platoformをHibernate 2.1に変更します。

この問題は、Persistence XMLエディターでpersistence.xmlを開き、下部に単一のSourceタブのみがあり、一般、接続、オプション、プロパティなどの他のタブがない場合にも現れます。

2
Chris Hinshaw

これに関するアップデートはありますか?これはまだ正しいように見える問題ですか? JPAプロジェクトを作成し、Mavenプロジェクトに変換すると、エラーが表示され、推奨される方法でそれを取り除くことはできません。

編集

わかりましたので、実際に Mavenディレクトリ形式 でいくつかのフォルダーを操作した後、まだ動作しませんでしたが、src/main/Javaの下に、src/main/resources/META-INFそれは解決されました。

Mavenプロジェクトの作成とJPAファセットの追加も機能しますが、これはJPAファセットがMETA-INFおよびpersistence.xmlファイルをsrc/main/Javaに追加するためです。

2
Dustin

enter image description hereXmlファイルのandthingを変更したり、srcフォルダーにxmlを追加したりする必要はありません。 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で「シンボリックリンク」を作成することで問題を修正しました。したがって、Mavenが期待し、m2Eclipseが必要とするように、persistence.xmlファイルはsrc/main/resources/META-INFに残ります。ただし、Daliの問題を修正するには、src/main/resources/META-INFのファイルにリンクするsrc/main/Java/META-INFに新しいファイルを作成します。これを行うには、新しいファイルを作成するときに「詳細」オプションを押し、「参照...」ボタンを使用してファイルを検索します。これにより、META-INFフォルダーに物理ファイルが作成されないことに注意してください。ただし、リンクを作成するにはフォルダー自体が必要です。

それがあなたのために働くことを願っています。

1
viviansteller

Tomcatが埋め込まれたEclipseでsrc/main/Java/META-INF/persistence.xmlが正常に動作していました。 Mavenで構築されたWARにコピーされていなかったため、src/main/resources/META-INFに移動しました。

src/main/resources/META-INF/persistence.xmlは検証されません。

Xyz_persistence.xmlに名前を変更すると、正常に検証されます。
persistence.xmlに名前を変更すると、検証に失敗します。

これらの迷惑な状況が発生したとき、私はしばしば私のような多くの異なる「解決策」を見つけますが、それらのほとんどは普遍的に適用できません。

だから、ここに私の「解決策」があり、それはバグを回避するためのハックだと思う:

エラー「persistence.xmlファイルにコンテンツが認識されていません」を削除するには、JPA Validatorを無効にします。

  • リスト項目メニュー項目プロジェクト>プロパティ>設定>検証を選択します
  • リスト項目手動検証とビルド検証の両方でJPAバリデーターを無効にします。

クリーニングと再構築が必要になる場合があります。あなたのマイレージは異なる場合があります。

1
J Slick

この問題はIndigo(2011年6月にリリース)で修正されました。 https://bugs.Eclipse.org/bugs/show_bug.cgi?id=251323#c24 および https: //issues.sonatype.org/browse/MECLIPSEWTP-11

「persistence.xmlファイルには認識されたコンテンツがありません。」エラーは、プロジェクトのインポートまたはワークスペースの起動時にランダムに表示される場合がありますが、プロジェクトのクリーンアップまたはMavenプロジェクトの更新で修正できます。これはSR2のDaliで修正されます。

0
Fred Bricon

私は同じ問題に遭遇しました。プロジェクトのプロパティに移動-> Java build path-> source、remove * /。src/main/resources sourceのJava除外属性。次にMETA-INF/persistenceを追加.xml。その後、Eclipseを再起動しますProject ExplorerのJPA Contentの下にpersistence.xmlが表示されたら、変更を元に戻します。

まあ、私が提案することは愚かに見えるが、魔法のように動作します。ところで、私のEclipseバージョンは3.6です。

0
Gursel Koca

META-INFフォルダーをsrc/main/resourcesにドラッグし、src/test/resourcesにドラッグして戻すことで修正しました。問題を修正するのに必要なのはそれだけです。上記のすべての手順を試してみましたが、それらのどれも私のために働いていないようで、最終的にこの1つはトリックをやりました。

0
Amzi

私も同じ問題を抱えています。私の解決策:persistence.xmlファイルを右クリック-> JPA-Tools-> Synchronize Class List。その後、それは解決されました。

0
Max

私にとっては、Eclipseの[マーカー]タブからすべてのメッセージをクリアすると動作しました

0
Sumit Khaitan

プロジェクト構造のどこにファイルがありますか?

Refについては、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
arvinq

私は同じ問題を抱えていましたが、それをなくすために、この行がファイルの先頭の最初の行であることを確認する必要がありました(先頭の空の行またはスペースはありません):

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

何度か同じ問題が発生しましたが、ファイルの内容をコピーして削除し、新しいpersistence.xmlファイルを作成して、内容を貼り付けて戻すことができました。

0

わかりました...一番上のものがそうでなかったので、私のために働いた別のかなり堅牢なソリューション:

  • 私はMercurialを使用し、現在のバージョンと最後のバージョンに顕著な違いなしで簡単に戻ることができたため、次のように動作しました。

  • この問題とは無関係ないくつかの重要な変更をコミットしました

  • 以前のレポバージョンへの切り替え
  • auto-/refresh/-rebuild ran fine

私が認識したのは、問題はJava Builderがwar/WEB-INF/classes/ファイルを生成しなかったためである可能性があることでした。以下は、私のプロジェクトを構築する際にこのトレイルをたどるのにうまくいきませんでした:

  • validator、Builder、Facetsの無効化/再構成(Java Builder/Facetが存在するまで)
  • persistence.xmlの名前変更またはさまざまな方法での編集

いくつかの内部状態を変更できないかのように、それはそれを助けませんでした。

0

再現するのが難しいので言うのは難しい(あなたのpersistence.xmlは完全に有効です)が、次のことを試してください。

  • プロジェクトをクリーンアップします( "Project> Clean"とMaven cleanの両方)
  • EclipseにXMLファイルを再度検証させます(右クリックして、[XMLファイルの検証]を選択します)。
0
Pascal Thivent

同じエラーが発生しましたが、別の方法で解決しました。

問題は、META-INFをソースフォルダーと見なす必要があることです。/ejbModuleの下にあるので(私の場合はEJBプロジェクトです)、ビルドパス上にあると想定しました。そして、そうではなかった。実際には、ビルドパスの「除外」リストにありました。そのため、プロジェクトエクスプローラービューでMETA-INFフォルダーを右クリックし、[ビルドパス]メニューで[含める]を選択するだけでした。次に、Eclipseにプロジェクトをクリーンアップするように依頼しましたが、すべてが正常でした。

宜しくお願いします。

0
dgimenes