Java EclipseLink从maven项目中的数据库中选择实体
如何在maven项目中使用EclipseLink查询数据库实体?我一直收到一个错误,没有找到类定义 以下查询将导致NoClassDefFoundError异常:Java EclipseLink从maven项目中的数据库中选择实体,java,mysql,maven,intellij-idea,eclipselink,Java,Mysql,Maven,Intellij Idea,Eclipselink,如何在maven项目中使用EclipseLink查询数据库实体?我一直收到一个错误,没有找到类定义 以下查询将导致NoClassDefFoundError异常: Query query = this.entityManager.createQuery("SELECT e FROM Edge e"); Edge类的实现如下所示(此项目启用了拖放和创建表): @实体 公共阶级边缘{ @身份证 @生成值 int-id; 串边; @OneToMany(cascade=CascadeType.PERSI
Query query = this.entityManager.createQuery("SELECT e FROM Edge e");
Edge类的实现如下所示(此项目启用了拖放和创建表):
@实体
公共阶级边缘{
@身份证
@生成值
int-id;
串边;
@OneToMany(cascade=CascadeType.PERSIST)
专用最终列表通道=新的ArrayList();
公共边缘(){
}
公共边缘(字符串边缘名称){
this.edgeName=edgeName;
}
...
}
这是我正在使用的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="verplaatsingssysteem" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.password" value=""/>
<property name="eclipselink.jdbc.user" value="root"/>
<property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/verplaatsingssysteem"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
org.eclipse.persistence.jpa.PersistenceProvider
假的
将引发以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/persistence/internal/libraries/antlr/runtime/Parser
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:198)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:173)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:125)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:109)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1326)
at MovementSystem.MovementSystemDAO.getEdge(MovementSystemDAO.java:50)
at Import.MainImport.createEdgeInDatabase(MainImport.java:99)
at Import.MainImport.processImport(MainImport.java:53)
at Import.MainImport.processFile(MainImport.java:41)
at Import.MainImport.main(MainImport.java:30)
Caused by: java.lang.ClassNotFoundException: org.eclipse.persistence.internal.libraries.antlr.runtime.Parser
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 22 more
线程“main”java.lang.NoClassDefFoundError中的异常:org/eclipse/persistence/internal/libraries/antlr/runtime/Parser
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:800)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
在java.net.URLClassLoader.access$100(URLClassLoader.java:71)
在java.net.URLClassLoader$1.run(URLClassLoader.java:361)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
位于org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(ejbqueryyimpl.java:198)
位于org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:173)
位于org.eclipse.persistence.internal.jpa.EJBQueryImpl(EJBQueryImpl.java:125)
位于org.eclipse.persistence.internal.jpa.EJBQueryImpl(EJBQueryImpl.java:109)
位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1326)
位于MovementSystem.MovementSystemDAO.getEdge(MovementSystemDAO.java:50)
在Import.mainport.createEdgeInDatabase(mainport.java:99)
在Import.mainport.processImport(mainport.java:53)
位于Import.mainport.processFile(mainport.java:41)
mainport.main(mainport.java:30)
原因:java.lang.ClassNotFoundException:org.eclipse.persistence.internal.libraries.antlr.runtime.Parser
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 还有22个
pom.xml:
<?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>nl.test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>3.0ea8</version>
</dependency>
</dependencies>
</project>
4.0.0
自然语言测试
测试
1.0-快照
antlr
antlr
3.0ea8
从stacktrace中,我假设您缺少一个依赖项,可能是org.eclipse.persistence.antlr。我缺少EclipseLink依赖项。你需要这样的东西:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
org.eclipse.persistence
NoClassDefFoundError-针对哪个类?@FlorianSchaetz在createQuery行引发异常。我猜eclipse链接找不到Edge类的.java。例外应该是缺少哪个类。你有没有清理和建立你的项目。为什么你要猜?stacktrace没有确切地告诉您找不到哪个类def吗?@FlorianSchaetz我要添加一个异常。等一下
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>