java - 在 JavaEE Maven 项目中使用 Hibernate 时出现 "java.lang.NoClassDefFoundError: javax/persistence/criteria/Selection"错误

标签 java hibernate maven jpa intellij-idea

我在 Maven/JEE 项目中使用 Hibernate 时遇到问题,并且每次尝试使用它 (Hibernate) 时仍然收到此错误。

我使用 IntelliJ IDEA 作为 IDE。

这是我的 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>panier</groupId>
    <artifactId>com.panier</artifactId>
    <version>1.0</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.10.Final</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>5.4.10.Final</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.29</version>
            </dependency>
<!--             https://mvnrepository.com/artifact/javassist/javassist-->
            <dependency>
                <groupId>javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.12.1.GA</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.18</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api -->
            <dependency>
                <groupId>org.hibernate.javax.persistence</groupId>
                <artifactId>hibernate-jpa-2.0-api</artifactId>
                <version>1.0.1.Final</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink -->
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
            </dependency>
        </dependencies>
</project>

我也使用 persistenence.xml :

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
    <persistence-unit name="Products_PU" transaction-type="RESOURCE_LOCAL">
        <!-- Persistence provider -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <!-- Entity classes -->
        <class>main.java.model.Product</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/school_product"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.schema-generation.database.action" value="create"/>
        </properties>
    </persistence-unit>
</persistence>

关于我的项目结构,如下所示: my project Structure

但仍然收到此错误消息:

Error Message

我认为可能与卸载Jar有关,但查找了很久仍然没有有效结果。

谢谢。

最佳答案

问题是Maven没有导入Hibernate Jar,手动导入后就正常了。 谢谢。

关于java - 在 JavaEE Maven 项目中使用 Hibernate 时出现 "java.lang.NoClassDefFoundError: javax/persistence/criteria/Selection"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449059/

相关文章:

java - TreeBag 的比较器按出现次数排序

Java/hibernate : how to write DAO code for complex SQLs

java - 在 Hibernate 中更新包含列表的对象

scala:console 比 Scala 自己的 REPL 还差?

maven - 错误: package javax. servlet不存在

Java - 如何将图像添加到资源

java - 从 Hashmap 填充 JList 并检索键

java - 我的第一个程序出现问题

java - Spring 启动和 hibernate : print/log DDL

android - Intellij 12 maven library Android RestTemplate 麻烦处理javax/xml/parser/DocumentBuilder.class