Jakarta ee 正确编译后,Maven项目不会执行
我正在学习《Java_EE_6和Glassfish_3开始创建实体》一书的教程。我按照步骤一个接一个地检查google,但在执行过程中仍然有错误 因此,实体类是:Jakarta ee 正确编译后,Maven项目不会执行,jakarta-ee,maven,jpa,Jakarta Ee,Maven,Jpa,我正在学习《Java_EE_6和Glassfish_3开始创建实体》一书的教程。我按照步骤一个接一个地检查google,但在执行过程中仍然有错误 因此,实体类是: package com.apress.javaee6.chapter02; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persisten
package com.apress.javaee6.chapter02;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
@Entity
@NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b")
public class Book {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String title;
private Float price;
@Column(length = 2000)
private String description;
private String isbn;
private Integer nbOfPage;
private Boolean illustrations;
//Here I put the constructor and getters and setters
}
持久化单元是:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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" version="2.0">
<persistence-unit name="chapter02PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.apress.javaee6.chapter02.Book</class>
<properties>
<property name="eclipselink.target-database" value="DERBY"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.logging.level" value="INFO"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/chapter02DB;create=true"/>
<property name="javax.persistence.jdbc.user" value="APP"/>
<property name="javax.persistence.jdbc.password" value="APP"/>
</properties>
</persistence-unit>
</persistence>
maven项目的POM文件为:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.apress.javaee6</groupId>
<artifactId>chapter02</artifactId>
<version>2.0</version>
<name>chapter02</name>
<properties>
<project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
<eclipselink.version>2.4.0</eclipselink.version>
</properties>
<repositories>
<repository>
<id>EclipseLink</id>
<url>http://download.eclipse.org/rt/eclipselink/maven.repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.8.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.8.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
我得到一个例外:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named chapter02PU
意思是
org.eclipse.persistence.jpa.PersistenceProvider
在运行时类路径中不存在。我们需要更改classpathScope参数值以进行编译
@user1881983本地回购协议是什么?O_O您的jar应该包含javax.persistence工件,但是persistence文件存在于target/classes路径中。作为编译的结果,我的目标目录的结构是:target/CLASSES/META-INF/persistence.xml和target/CLASSES/COM/APRESS/JAVAEE6/CHAPTER02/main.class和book.class。另外,eclipselink存储库位于.m2下,其路径为C:\Users\my\u name\.m2
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named chapter02PU
org.eclipse.persistence.jpa.PersistenceProvider
mvn exec:java -Dexec.mainClass=com.apress.javaee6.chapter02.Main -Dexec.classpathScope=compile