2009-07-30 13 views
4

永続性のためにJPAを使用するEclipseアプリケーションを作成しようとしています。
私のプロバイダとしてEclipseLink(具体的にはorg.eclipse.persistence.jpa.PersistenceProvider)とDerbyをデータベースとして使用しようとしています。
現在、私はすべてのデータベース通信を扱い、モデルエンティティを定義するEclipse JPAプロジェクトを持っています。この製品はユニットテストされており、すべて動作しています。EclipseプラグインからJPAプロジェクトを参照すると、 "PersistenceException:EntityManagerの永続性プロバイダがありません"

私のEclipseアプリケーションは、このプロジェクトを使用して、使用するモデルエンティティを取得するという考えがあります。
問題は、EntityManagerを作成しようとすると、「No Persistence provider」例外が発生することです。

私はJPAプロジェクトを直接参照するか、最初にjarファイルにエクスポートしてみました。どちらもうまくいかなかった。

私が推測できる限り、これは自分のpersistence.xmlが表示されないか、永続性プロバイダがクラスパスにないことを意味します。

永続性ファイルは、私のjarファイルのルートのMETA-INFディレクトリにありますので、うまくいけばそれを選択してください。私はまた、アプリケーションのプラグインのMANIFEST.MFに以下を追加しました:

javax.persistence;bundle-version="1.99.0", 
org.eclipse.persistence.antlr;bundle-version="1.1.2", 
org.eclipse.persistence.asm;bundle-version="1.1.2", 
org.eclipse.persistence.core;bundle-version="1.1.2", 
org.eclipse.persistence.jpa;bundle-version="1.1.2" 

をこれがうまくいけば、必要なクラスを利用できるようになります。

私は行方不明を誰も見ることができますか?どのような2つの問題があるかを知る方法はありますか?これらの問題の1つですか?

ありがとうございました。

+0

私は上記の推奨されたソリューションをそれぞれ試して、 "エンティティマネージャの永続性プロバイダなし"エラーを引き続き取得します。試してみる可能性のある他の原因と修正がありますか? –

答えて

3

注:現在wiki exampleはまだ

あなたはで見ることができる(... August 2008以降)は推奨されません彼らのupdated examplelauncher

は彼らのMANIFEST.MFがどのように見える(関連するプラグインのリストを持ちます) :

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Application Plug-in 
Bundle-SymbolicName: org.eclipse.persistence.example.jpa.rcp.comics; singleton:=true 
Bundle-Version: 1.0.0 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.ui, 
org.eclipse.persistence.jpa, 
system.bundle, 
org.eclipse.persistence.example.jpa.comics.model.annotated;bundle-version="1.0.0", 
javax.persistence;bundle-version="1.99.0", 
org.eclipse.persistence.antlr;bundle-version="0.1.0" 
Bundle-RequiredExecutionEnvironment: J2SE-1.5 
Bundle-ClassPath: . 
Import-Package: org.apache.derby.jdbc 

この例ではhelあなたのアプリケーションで何が間違っているかを見つけますか?

+0

はい、ありがとうございます、そこに問題の内容がわかりました。私はエンティティマネージャファクトリを作成するために、 を使用しました。 Persistence.createEntityManagerFactory(UNIT_NAME); は、persistence.xmlに依存しています。これは動作しませんが、以下を行います。 新しいはPersistenceProvider()createEntityManagerFactory( \t \t UNIT_NAME、 プロパティ)のプロパティはpersistence.xmlのをハッシュマップと永続プロバイダあなたのimport文によって決定されていない取得している 。 最後に、プロバイダとしてorg.eclipse.persistence.jpa.osgi.PersistenceProviderを使用する必要があるようです。 –

関連する問題