Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EclipseLink从maven项目中的数据库中选择实体_Java_Mysql_Maven_Intellij Idea_Eclipselink - Fatal编程技术网

Java EclipseLink从maven项目中的数据库中选择实体

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

如何在maven项目中使用EclipseLink查询数据库实体?我一直收到一个错误,没有找到类定义

以下查询将导致NoClassDefFoundError异常:

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>