【问题标题】:Maven java.lang.NoClassDefFoundError: org/hibernate/query/QueryMaven java.lang.NoClassDefFoundError: org/hibernate/query/Query
【发布时间】:2022-01-28 05:36:16
【问题描述】:

我正在处理一个项目,并且在运行该项目时不断产生错误。

我需要帮助来解决这个问题,提前谢谢你。

更新 -------------------------------

我仍在为这个问题苦苦挣扎,一开始我试图测试方法一切正常,所有的插入、更新、删除......但是当我添加 Servlet 时,我得到了这些错误。


这是我第一次使用 Maven 和 Hibernate,它给出了大量的错误,例如

java.lang.NoClassDefFoundError: org/hibernate/query/Query at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215)

我已经尝试了这个solution 它工作了一段时间(servlet 也工作)然后又回到同样的问题。

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>org.eclipse</groupId>
          <artifactId>GestionDesAchats1</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>war</packaging>
        
          <name>SchoolProject Maven Webapp</name>
          <!-- FIXME change it to the project's website -->
          <url>http://www.example.com</url>
        
          <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
          </properties>
        
          <dependencies>
            <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.11</version>
              <scope>test</scope>
            </dependency>
            
            <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            
            
            <dependency>
                <groupId>commons-digester</groupId>
                <artifactId>commons-digester</artifactId>
                <version>2.1</version>
            </dependency>
            
            <dependency>
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-core</artifactId>
              <version>5.6.0.Final</version>
            </dependency>
            
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.0</version>
                <scope>provided</scope>
            </dependency>
            
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.2-b02</version>
                <scope>provided</scope>
            </dependency>
            
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            
            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>8.0.27</version>
            </dependency>
            
          </dependencies>
        
          <build>
            <finalName>SchoolProject </finalName>
            <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
              <plugins>
                <plugin>
                  <artifactId>maven-clean-plugin</artifactId>
                  <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                  <artifactId>maven-resources-plugin</artifactId>
                  <version>3.0.2</version>
                </plugin>
                <plugin>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.8.0</version>
                </plugin>
                <plugin>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>2.22.1</version>
                </plugin>
                <plugin>
                  <artifactId>maven-war-plugin</artifactId>
                  <version>3.2.2</version>
                </plugin>
                <plugin>
                  <artifactId>maven-install-plugin</artifactId>
                  <version>2.5.2</version>
                </plugin>
                <plugin>
                  <artifactId>maven-deploy-plugin</artifactId>
                  <version>2.8.2</version>
                </plugin>
              </plugins>
            </pluginManagement>
          </build>
        </project>

jars

Error


更新2 我无法解决这个问题,所以我切换到 Dynamic web Project,现在一切正常,我什至不必更改一段代码或添加其他 jars。

【问题讨论】:

  • 你能分享你的java代码吗?

标签: java hibernate maven pom.xml java-ee-6


【解决方案1】:

尝试运行mvn dependency:tree 以查看您的类路径是什么样的。

hibernate、REST 和其他组件之间存在兼容性矩阵。这意味着您必须一起使用正确的版本。弄清楚要组合哪些内容通常并非易事,但mvn dependency:tree -Dverbose 会让您深入了解覆盖版本的位置。如今,大多数平台都有一个网站可以为您生成兼容的 pom(Quarkus、Spring 等)。但是基于老派war 的部署通常还没有。基于非战争的 Hibernate with Rest 部署看起来不同:here's an example

快速搜索显示类 org.hibernate.query.Query 存在于 hibernate-core 5.2 中,但不存在于 5.6 中,它被移至 org.hibernate:hibernate-search-orm。

也尝试添加对 hibernate-search-orm 的依赖:

        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-search-orm</artifactId>
          <version>5.6.0.Final</version>
        </dependency>

【讨论】:

  • 我添加了这个依赖并运行了mvn dependency:tree -Dverbose 并得到了这个警告[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
  • 与解决您的问题无关,但是一个很好的迹象表明依赖管理和兼容性矩阵是多么困难 - 以及通过将平台 bom 导入到为您处理版本。
  • 我还在为这个问题苦苦挣扎,一开始我试图测试方法一切正常,所有的插入 int 数据库,更新,删除......但是当我添加 Servlet 我有这些错误吗?请问您知道怎么解决吗?
猜你喜欢
  • 2018-06-30
  • 1970-01-01
  • 2013-02-11
  • 2013-10-18
  • 2012-04-08
  • 2015-10-28
  • 2016-03-05
  • 2015-06-05
  • 1970-01-01
相关资源
最近更新 更多