我正在使用JPA +休眠5.我和dom4j有問題。異常在線程「主」java.lang.NoClassDefFoundError:org/dom4j/io/STAXEventReader
非常感謝。
類Empleado.java - >
@Entity
@Table(name = "EMPLEADO")
public class Empleado implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "COD_EMPLEADO")
private Long codigo;
@Column(name = "APELLIDOS")
private String apellidos;
@Column(name = "NOMBRE")
private String nombre;
@Column(name = "FECHA_NACIMIENTO")
private Date fechaNacimiento;
public Empleado() {
}
public Empleado(Long codigo, String apellidos, String nombre, Date fechaNacimiento) {
this.codigo = codigo;
this.apellidos = apellidos;
this.nombre = nombre;
this.fechaNacimiento = fechaNacimiento;
}
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Date getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(Date fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
@Override
public String toString() {
return "Empleado [codigo=" + codigo + ", apellidos=" + apellidos + ", nombre=" + nombre + ", fechaNacimiento="
+ fechaNacimiento + "]";
}
}
類TestEmpleado: - >
public class TestEmpleados {
private static EntityManager manager;
private static EntityManagerFactory emf;
@SuppressWarnings("unchecked")
public static void main(String[] args) {
emf = Persistence.createEntityManagerFactory("Persistencia");
manager = emf.createEntityManager();
List<Empleado> empleados = (List<Empleado>) manager.createQuery("FROM Empleado").getResultList();
System.out.println(empleados.size() + "Empleados");
}
}
這是我的persistence.xml: - >
<?xml version="1.0" encoding="UTF-8" ?>
<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" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="Persistencia">
<class>es.makigas.hibernate.modelo.Empleado</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem/test" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
而在最後這是我的POM: - >
<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>es.makigas</groupId>
<artifactId>hibernate-jpa-ejemplo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.191</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
當我執行我收到以下錯誤TestEmpleados - >
mar 17, 2017 11:18:07 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: Persistencia
...]
mar 17, 2017 11:18:07 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.1.0.Final}
mar 17, 2017 11:18:07 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
mar 17, 2017 11:18:07 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/io/STAXEventReader
at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:180)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:34)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:165)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:114)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at es.makigas.hibernate.tests.TestEmpleados.main(TestEmpleados.java:19)
Caused by: java.lang.ClassNotFoundException: org.dom4j.io.STAXEventReader
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more
'java.lang.ClassNotFoundException:org.dom4j.io.STAXEventReader'。和?它不能找到類! –
我已經在Maven Dependencies Dom4j-1.6.1jar中添加了。在Java Build Path中也有jar4j-1.6.1。 – SatoK
並修復您對javax.persistence的使用。你有JPA 1.0,但是你的JPA提供者實現了JPA 2.1! –