Java 没有使用eclipselink命名的EntityManager的持久性提供程序
我有一个小项目在Eclipse中运行良好。然而,当我将它打包到一个jar中时,它将失败,没有持久性提供程序 我已经尝试过将eclipselink添加为maven依赖项、外部jar文件,以及Eclipse中的正常项目依赖项。我也尝试过使用extract和packagerequired库进行打包,没有任何区别 值得注意的是,Jersey依赖项可以正常工作,并且可以毫无问题地调用服务器。因此,这些依赖项在.jar文件中起作用Java 没有使用eclipselink命名的EntityManager的持久性提供程序,java,eclipse,maven,jpa,Java,Eclipse,Maven,Jpa,我有一个小项目在Eclipse中运行良好。然而,当我将它打包到一个jar中时,它将失败,没有持久性提供程序 我已经尝试过将eclipselink添加为maven依赖项、外部jar文件,以及Eclipse中的正常项目依赖项。我也尝试过使用extract和packagerequired库进行打包,没有任何区别 值得注意的是,Jersey依赖项可以正常工作,并且可以毫无问题地调用服务器。因此,这些依赖项在.jar文件中起作用 The Persistence.xml is located in proj
The Persistence.xml is located in
project/src/META-INF/persistence.xml
I have tried removing one of the persistance-unit without change.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="TestMDB" transaction-type="RESOURCE_LOCAL">
<class>com.sg.db.entity.Result</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:ucanaccess://viking.mdb"/>
<property name="javax.persistence.jdbc.driver" value="net.ucanaccess.jdbc.UcanaccessDriver"/>
</properties>
</persistence-unit>
<persistence-unit name="TestMDBLive" transaction-type="RESOURCE_LOCAL">
<class>com.sg.db.entity.Result</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:ucanaccess://c:/Viking2001/DataBas/Viking.mdb"/>
<property name="javax.persistence.jdbc.driver" value="net.ucanaccess.jdbc.UcanaccessDriver"/>
</properties>
</persistence-unit>
</persistence>
请尝试使用打包应用程序
这将确保所有依赖项都正确地放入jar归档文件中我最初创建了一个正常的项目,我在该项目上使用configure并将其转换为maven项目 我从头开始将该项目重新创建为maven项目,并将资源复制到另一个项目。之后,项目运行正常,eclipselink也包括在内
需要注意的是,persistence.xml应该仍然在src/mail/java/META.INF中,不需要移动它。如何打包应用程序?作为EclipseTry中的可运行jar,将
org.eclipse.persistence.jpa.PersistenceProvider
放在持久化单元配置中。不做任何更改。还是相同的错误消息。是否需要配置MANIFEST.MF以指向persistence.xml?部署的jar文件中的persistence.xml
在哪里?它应该位于/META-INF/persistence.xml
。如果您将它放在project/src/META-INF
下,那么它可能放错了结果jar中的位置。尝试过它,但最终不会打包pom.xml中的外部jar。如何启动程序集插件?在提示符下使用mvn包,输出中不会出现错误。配置插件后,您应该按如下方式运行它:mvn清洁组件:单个。更多信息请点击此处:
<dependency>
<groupId>ucanaccess</groupId>
<artifactId>ucanaccess</artifactId>
<scope>system</scope>
<version>3.0.1</version>
<systemPath>${project.basedir}/lib/ucanaccess-3.0.1.jar</systemPath>
</dependency>
No Persistence provider for EntityManager named TestMDBLive
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
public void init() {
//Setup database connection
try {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
em = factory.createEntityManager();
} catch (Exception ex) {
ex.printStackTrace(); }
}