【问题标题】:"NoSuchMethodError getHttpServletMapping" after springboot upgradespringboot升级后出现“NoSuchMethodError getHttpServletMapping”
【发布时间】:2020-02-03 09:34:38
【问题描述】:

我从 springboot 2.1.3 升级到 2.2.0。到目前为止一切正常,但我注意到当我发出一个返回 400 的休息请求时,我得到了错误,而不是得到 json 响应:

[Tomcat].[localhost]           : Exception Processing ErrorPage[errorCode=0, location=/error]
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping;

有趣的是,当我使用嵌入式 tomcat 从 Intellij 启动应用程序时,我得到这个。 (使用“spring-boot:run”创建一个 mvn 配置文件)

所以,

  • 有了独立的 tomcat,它在任何地方都能正常工作
  • 使用嵌入式 tomcat,并且仅当我从 Intellij 启动时才会收到此错误。

但是我可以用

从命令行做同样的事情

mvn spring-boot:run

那我没有错误?!正如另一篇文章所建议的那样,我将 IntelliJ 升级到了最新版本,但没有帮助

【问题讨论】:

    标签: java spring spring-boot maven intellij-idea


    【解决方案1】:

    我认为你必须升级你的 tomcat emdedded 的版本,版本不匹配。 Spring Boot 2.1.X 使用具有 Servlet API v4 的 Tomcat 9。 但是 Spring Boot Web 2.1.X 仍然包含 Servlet API v3.1。 或者 更改tomcat版本属性

    <properties> <tomcat.version>8.5.37</tomcat.version> <properties>

    注意:tomcat.version 属性是 pom.xml 中的普通 Maven 属性。只需将 tomcat.version 添加到您现有的 Maven 属性中

    【讨论】:

    • tomcat.version>8.5.37 给出错误,因为 2.2.0 支持我已经使用的 tomcat 9
    • 另外,请不要在此处窃取和复制其他帖子中的答案,就像您的答案一样
    • 我试图同时帮助和学习,这是谷歌stackoverflow.com/questions/54122724/…的众多研究之一
    【解决方案2】:

    我解决了这个问题。

    更改属性 tomcat.version 没有帮助,所以我省略了它并将其添加到 child pom(诀窍是它在父 pom 中不起作用)。另请注意,版本是 2.2.4 而不是 2.2.0

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>2.2.4.RELEASE</version>
        </dependency>
    

    【讨论】:

      【解决方案3】:

      只想提另一个“解决方案”,因为我在升级到 Spring Boot 2.4.0 后也遇到了同样的问题

      我的应用在 Java 11、Spring Boot 2.4.0 和 JakartaEE Api 8.0.0 上运行

      很长一段时间我都忽略了雅加达版本,因为我没有发现关于我的问题和网络中的这种依赖关系。

      但是在将 JakartaEE 升级到 9.0.0 后一切正常。

      <dependency>
          <groupId>jakarta.platform</groupId>
          <artifactId>jakarta.jakartaee-api</artifactId>
          <version>9.0.0</version>
      </dependency>
      

      这就是我的问题的解决方案 :) 也许它可以帮助其他人。

      【讨论】:

        猜你喜欢
        • 2023-01-03
        • 2021-05-14
        • 1970-01-01
        • 2020-11-08
        • 2018-09-13
        • 2020-05-08
        • 2021-07-23
        • 2018-09-10
        • 2020-10-13
        相关资源
        最近更新 更多