EclipseLinke:没有名为 META-INF/services/javax.persistence.spi 的资源文件:找不到 PersistenceProvider

2023-12-06

我正在使用 EclipseLink,即使我已经使用 maven 导入了所有必需的 jar 文件,我仍然遇到异常:

线程“main”中的异常 javax.persistence.PersistenceException:否 资源文件名为 META-INF/services/javax.persistence.spi.PersistenceProvider 是 成立。请确保持久性提供程序 jar 文件位于 你的类路径。

在 Maven pom 中我有依赖项:

<dependency>
      <groupId>javax.persistence</groupId>
      <artifactId>persistence-api</artifactId>
      <version>1.0.2</version>
      <scope>provided</scope>
</dependency>

这是我的 persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="PersistenzJPAProjekt">
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.testJPABasis.Person</class>

    </persistence-unit>
</persistence>

Here the clathpath in eclipse: enter image description here

实际生成异常的类:

public class TestJPA
{
    public static void main(String[] args)
    {
        Person person = new Person();
        person.setPersonID(1);

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenzJPAProjekt");
        EntityManager em = emf.createEntityManager();

    }
}

persistence.xml 直接位于 META-INF 下。据我所知,我不需要 Glassfish 或 Tomcat,因为 EclipseLink 是为独立应用程序而设计的。如果我错了,也许这就是原因。 Meta-Inf 位于:

enter image description here


persistence-api就是这样:API(主要是接口)。您仍然需要包含实际的持久性提供者;看来您需要 EclipseLink。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EclipseLinke:没有名为 META-INF/services/javax.persistence.spi 的资源文件:找不到 PersistenceProvider 的相关文章

随机推荐