2010-07-12 48 views
6

我想创建一个能够使用Java持久性的Bundle。为了达到这个目的,我在Eclipse中创建了一个插件项目。在我的项目中,我创建了一个persistence.xml文件到META-INF。我ASLO加入我的MANIFEST.MF(进入depencies)这3个包:EclipseLink:否EntityManager的持久性提供者名为

  1. javax.persistence.jar
  2. org.eclipse.persistence.jar
  3. org.eclipse.persistence.jar

然后,在我激活我用这样的行来创建一个EntityManager:

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 

要执行我的包,我做了一个机生产线ct配置。当我运行我的产品配置,我得到这个错误:

javax.persistence.PersistenceException:否EntityManager的命名人

持久化提供我试着将我的persistence.xml的位置没有成功。看来,任何包加载persistence.xml文件。也许,我没有导入正确的软件包?

你可以在这里下载我的简单捆绑:download

你能帮我找到一个解决方案或线索?

回答

4

尝试在persistence.xml新增此标签:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
+1

谢谢,但我坚持这一行。xml文件。 另一种解决方案? – user376112 2010-07-13 07:14:08

2

看来你没有描述在MANIFEST.MF你的持久单元JPA-PersistenceUnits:头。你可以在这里找到EclipseLink的更多细节(1)。

(1):http://wiki.eclipse.org/Gemini/JPA/Documentation/CreatingAnApplication

+0

我解决了我的问题。我只有把清单中的类路径这个包: - persistence.jar - eclipselink.jar - 的mysql-connector.jar 感谢 – user376112 2010-07-14 07:10:07

6

我已经解决了我的问题。我只有把清单中的类路径这个包: - persistence.jar - eclipselink.jar - 的mysql-connector.jar

感谢

+0

我不知道我跟着你做添加一个清单给那些罐子文件?可以详细说明一点吗? – simgineer 2016-12-12 22:20:10

1

如果您从Eclipse中使用运行你的应用程序Maven,右键单击JPA项目,选择Properties,并查看是否有“Deployment Assembly”菜单项。如果是,请单击部署程序集,单击添加...按钮,单击Java构建路径条目,然后选择Maven Dependencies。确保eclipselink.jar是Maven的依赖项之一

1

我在Eclipse中运行的简单项目中遇到同样的错误。

事实证明,将META-INF目录(包含persistence.xml)添加到我的类路径中是错误的。

您必须在类路径中包含其包含的dir(或jar)。从EclipseLink 2.5.1源代码:

/** 
    * Search the classpath for persistence archives. A persistence archive is 
    * defined as any part of the class path that contains a META-INF directory 
    * with a persistence.xml file in it. Return a list of {@link Archive} 
    * representing the root of those files. It is the caller's responsibility 
    * to close all the archives. 
    * 
    * @param loader the class loader to get the class path from 
    */ 
    public static Set<Archive> findPersistenceArchives(ClassLoader loader){ 
     // allow alternate persistence location to be specified via system property. This will allow persistence units 
     // with alternate persistence xml locations to be weaved 
     String descriptorLocation = System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT); 
     return findPersistenceArchives(loader, descriptorLocation); 
    } 
相关问题