Spring boot 3升级错误:'org.springframework.http.HttpStatus org.springframework.http.ResponseEntity.getStatusCode()'

问题描述 投票:0回答:2

我正在将我的 springboot 应用程序从 springboot 2.9.7 升级到 springboot 3.0.2。 在进行干净构建时,我收到以下与 Rest API 调用相关的错误(使用 Rest 模板)。

引起:java.lang.NoSuchMethodError:'org.springframework.http.HttpStatus org.springframework.http.ResponseEntity.getStatusCode()'

据我了解,这与由于 springboot 版本升级到 3.0.2 而导致 springframework 升级到某些 6.. 版本有关。

有人遇到过这个问题吗?如何解决这个问题。

这是一个gradle项目。我添加了以下与 Spring Boot 升级相关的配置。

springBootVersion = '3.0.2'

除此之外,它是一个简单的 Spring Boot 微服务,我们有一个端点,它在内部调用另一个 Rest API 等。

我只将 spring boot 版本从 2.9.7 更改为 springboot 3.0.2,并且它开始失败并出现上述错误。

java spring spring-boot resttemplate
2个回答
1
投票

读取错误

Caused by: java.lang.NoSuchMethodError: 'org.springframework.http.HttpStatus
   org.springframework.http.ResponseEntity.getStatusCode()'

错误表示不存在返回

getStatusCode()
的方法
HttpStatus
。这是正确的,因为新版本的 Spring 中这个方法返回的是
HttpStatusCode

示例

// HttpStatus status = responseEntity.getStatusCode();
// Should be ↓

HttpStatusCode statusCode = responseEntity.getStatusCode();
int statusCodeValue = responseEntity.getStatusCode().value();

更改:spring-projects/spring-framework


0
投票

分析错误日志,

getStatusCode()
返回
HttpStatusCode
,所以必须导入HttpStatusCode。

  • 要推断情况,您可以使用 getStatusCode() 和 import
    org.springframework.http.HttpStatus
    • Spring Boot 3.0 中这部分已更改为返回类型
      HttpStatusCode
  • 因此,
    getStatusCode()
    HttpStatus
    会抛出
    NoSuchMethod
    异常。
  • 下面是一个示例,包括在 Spring Boot 3.0 中使用 getStatusCode() 时的导入部分。
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;

public class TestController {

    public void Test() {
        ResponseEntity<Object> responseEntity = ResponseEntity.status(200).build();
        HttpStatusCode statusCode = responseEntity.getStatusCode();
    }
}

如您所见,HttpStatus 未导入。我希望它会有所帮助谢谢:)

© www.soinside.com 2019 - 2024. All rights reserved.