Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 带JPA的嵌入式Derby:没有名为的EntityManager的持久性提供程序_Eclipse_Jpa_Derby - Fatal编程技术网

Eclipse 带JPA的嵌入式Derby:没有名为的EntityManager的持久性提供程序

Eclipse 带JPA的嵌入式Derby:没有名为的EntityManager的持久性提供程序,eclipse,jpa,derby,Eclipse,Jpa,Derby,还有一个。3.5小时后,我转向stackoverflow,看看是否有人能找出发生此错误的原因 javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby 完整的异常回溯如下所示 javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby

还有一个。3.5小时后,我转向stackoverflow,看看是否有人能找出发生此错误的原因

javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby
完整的异常回溯如下所示

javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at mmis.mars.irs.mec.batch.DerbyTest.setup(DerbyTest.java:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
引用了以下jar。这些是JPA、eclipselink、derby和derbyclient。我不认为需要derbyclient,但我在另一篇关于eclipselink嵌入式derby的帖子中包含了它

  • javax.persistence_2.1.0.v201304241213.jar
  • 日食罐
  • derby.jar
  • derbyclient.jar
下面是persistence.xml文件。它位于META-INF文件夹中,该文件夹位于项目的根目录中。META-INF文件夹将作为源文件夹添加到项目中

    <?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="derby" transaction-type="RESOURCE_LOCAL">
            <class>JPA_class1</class>
            <class>JPA_class2</class>
            <class>JPA_class3</class>
            <class>JPA_class4</class>

            <properties>
                <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
                <property name="javax.persistence.jdbc.url" value="jdbc:derby:thedb;create=true" />
            </properties>
        </persistence-unit>
    </persistence>
以下是导致错误的代码行

Persistence.createEntityManagerFactory("derby").createEntityManager();

尝试验证JPA persistence.xml文件是否命名并位于项目文件夹的“src/META-INF/persistence.xml”中。可能是由于路径文件名或Persistence.xml文件的路径名不正确,JPA找不到持久性单元。

请尝试验证JPA Persistence.xml文件是否命名并位于项目文件夹中的“src/META-INF/Persistence.xml”中。可能是由于路径文件名或Persistence.xml文件的路径名不正确,JPA找不到持久性单元。

您肯定不需要derbyclient.jar,因为您使用的是Derby EmbeddedDriver和Derby embedded JDBC连接URL语法。您能否提供完整的异常回溯,而不仅仅是一行摘要?我已经添加了完整的回溯。谢谢^ u^。您是否尝试过在
持久化单元
中显式指定
提供者
标记?我不确定是什么“其他帖子”告诉你这不是必需的。我看到的唯一一件事是,如果要省略
provider
标记,您必须满足其他先决条件。我尝试过使用provider标记,是的。他们两人都没有解决这个错误。我编辑了这篇文章,展示了我使用provider标记所做的尝试,以说明我将provider标记放置在了正确的区域中。如果类路径中有一个JPA提供程序,则不需要provider(是否存在?)。当使用EclipseLink(您的第一次尝试)时,将其设置为OpenJPA将永远无法工作,因为这是另一个JPA提供程序(可能不存在)。您肯定不需要derbyclient.jar,因为您使用的是Derby EmbeddedDriver和Derby embedded JDBC连接URL语法。您能否提供完整的异常回溯,而不仅仅是一行摘要?我已经添加了完整的回溯。谢谢^ u^。您是否尝试过在
持久化单元
中显式指定
提供者
标记?我不确定是什么“其他帖子”告诉你这不是必需的。我看到的唯一一件事是,如果要省略
provider
标记,您必须满足其他先决条件。我尝试过使用provider标记,是的。他们两人都没有解决这个错误。我编辑了这篇文章,展示了我使用provider标记所做的尝试,以说明我将provider标记放置在了正确的区域中。如果类路径中有一个JPA提供程序,则不需要provider(是否存在?)。当使用EclipseLink(您的第一次尝试)时,将其设置为OpenJPA将永远无法工作,因为这是一个不同的JPA提供者(可能不存在)。
<persistence-unit name="derby" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

    <class>...</class>

    <properties>
        ...
    </properties>
</persistence-unit>
<persistence-unit name="derby" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

    <class>...</class>

    <properties>
        ...
    </properties>
</persistence-unit>
javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby
Persistence.createEntityManagerFactory("derby").createEntityManager();