2

私はEclipseLinkを使用していますが、必要なすべてのjarファイルをmavenでインポートしても、例外が発生します:

スレッド「メイン」での例外 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>

ここでEclipseのクラスパス: ここに画像の説明を入力

実際に例外を生成するクラス:

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 の直下にあります。私の知る限り、EclipseLink はスタンドアロン アプリケーション用に作成されているため、Glassfish や Tomcat は必要ありません。私が間違っていれば、これが原因かもしれません。Meta-Inf は次の場所に配置されます。

ここに画像の説明を入力

4

1 に答える 1

2

persistence-apiつまり、API (主にインターフェース) です。実際の持続性プロバイダーを含める必要があります。EclipseLink が必要なようです。

于 2013-09-15T17:43:08.743 に答える