从Eclipse插件引用JPA项目会导致“PersistenceException:EntityManager没有持久性提供程序”

时间:2009-07-30 10:51:56

标签: eclipse jpa

我正在尝试创建一个使用JPA进行持久化的Eclipse应用程序 我正在尝试使用EclipseLink作为我的提供者(更具体的org.eclipse.persistence.jpa.PersistenceProvider)和Derby作为我的数据库 目前我有一个Eclipse JPA项目,它处理所有数据库通信并定义模型实体。该产品正在进行单元测试,一切正常。

我的想法是我的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"

这有望使所需的课程可用。

谁能看到我错过的东西?有没有办法看出它可能是哪两个问题?这是其中一个问题吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

注意:目前 wiki example 仍然已弃用(自August 2008起......)

您可以在 updated example a launcher(包含相关插件列表)中看到

他们的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

可能正在使用该示例可以帮助您找到应用程序中的错误信息吗?