9

統合テスト用の Maven ビルド中に、テスト データをテスト DB にロードしようとしています。persistence.xml は正しくコピーされてtarget/test-classes/META-INF/いますが、テストの実行時にこの例外が発生します。

javax.persistence.PersistenceException: aimDatabase という名前の EntityManager の持続性プロバイダーがありません

persistence.xml が見つからないか、読み込まれていないようです。

4

6 に答える 6

16

Maven/Eclipse ベースの JPA プロジェクトで同じ問題を解決しました。

src/main/javaテスト フェーズの前にターゲット ディレクトリにコピーされなかった結果、META-INF ディレクトリが下にありました。

このディレクトリを移動しsrc/main/resourcesて問題を解決し、テストの実行時にMETA-INF/persistence.xmlファイルが存在することを確認しました。target/classes

JPA ファセットがファイルを に配置したと思いますが、これが問題の原因であることが判明しました。META-INF/persistence.xmlsrc/main/java

于 2010-01-25T08:49:26.447 に答える
2

私も同じ問題を抱えていましたが、persistence.xml ファイルが見つからなかったのではなく、XML で指定されたプロバイダーが見つからなかったのです。

xml ファイルに正しい JPA プロバイダー依存関係と正しいプロバイダー定義があることを確認してください。

すなわち。<provider>oracle.toplink.essentials.PersistenceProvider</provider>

Maven では、依存関係を保持するパブリック リポジトリがなかったため、2 つの toplink-essentials jar をローカルにインストールする必要がありました。

于 2008-10-24T00:35:05.097 に答える
2

persistence.xml は scr/test/resources にありますか? 私は同様の問題に直面していたからです。

私のpersistence.xmlsrc/main/resourcesにある限り、すべてが正常に機能しています。

persistence.xmlsrc/test/resourcesに移動すると、何も機能しなくなります。

唯一の役立つが悲しい答えはここにあります: http://jira.codehaus.org/browse/SUREFIRE-427

不明な理由により、現在は不可能のようです。:-(

于 2010-07-09T11:45:26.207 に答える
2

これが Windows 上にある場合は、sysinternal の procmon を使用して、正しいパスをチェックしているかどうかを調べることができます。

パス -> 含む -> persistence.xml でフィルタリングするだけです。Procmon は、persistenc.xml という名前のファイルを開こうとする試みを検出します。試行されたパスを確認できます。

procmon の詳細については、http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx を参照してください

于 2008-09-17T00:23:58.350 に答える
1

同じ問題が発生し、プロジェクトを微調整したところ、最終的に次の問題が見つかりました (より明確なエラーの説明): at oracle.toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)

その情報を基に、最初のルールを思い出しました: パス名に空白を入れないでください!!!

これを試して。私たちの笑顔のために働きます。いつかこれが修正されるかもしれません。

これがうまくいくことを願っています。幸運を。

于 2008-11-07T14:14:28.267 に答える