これは、Maven によって構築された通常の JPA コンソールです。非常に厄介な例外が発生しました
java.lang.ClassNotFoundException: javax.persistence.Persistence
そのような問題についていくつかの解決策を見つけ、javaee-api lib を pom.xml に追加することを提案しています。しかし、エラーはまだjavaee-api libで立っています。
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class App
{
public static void main( String[] args )
{
// This line causes error
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory("testjpa");
// It works when I comment above line and print hello
}
}
したがって、例外はライブラリの問題に関連しておらず、persistence.xml ファイルが問題を引き起こしている可能性があると確信しています。
ここに私のプロジェクトツリー
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── hoan
│ │ ├── App.java
│ │ └── Customer.java
│ └── resources
│ └── META-INF
│ └── persistence.xml
└── test
私のpersistence.xml
<persistence-unit name="testjpa" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>com.foo.Customer</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/quickstart">
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="password"/>
</properties>
</persistence-unit>
pom.xml の依存関係
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-all</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
</dependency>
ちなみに、私はこのスレッド「EntityManagerの永続化プロバイダーがありません」エラーをたどりましたが、これは私の問題とまったく同じですが、何も機能していないようです。
どうしたの?
更新: jar ファイルを実行するコマンド ライン
java -cp target/jpa-demo.jar com.foo.App