You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3升级遇NoSuchMethodError:ResponseEntity.getStatusCode()缺失

解决Spring Boot 3.0.2升级后RestTemplate调用的NoSuchMethodError问题

问题原因

Spring Boot 3.0.2对应Spring Framework 6.x版本,其中org.springframework.http.ResponseEntity.getStatusCode()方法的返回类型从HttpStatus枚举改为了HttpStatusCode接口,你的代码或依赖库中仍有代码在调用该方法并期望返回HttpStatus,导致方法找不到错误。

解决步骤

1. 修改自定义代码中的方法调用

找到所有调用responseEntity.getStatusCode()的代码,根据需求调整:

  • 若只需判断状态码类别(如成功、客户端错误),直接使用HttpStatusCode的内置方法:
    HttpStatusCode statusCode = responseEntity.getStatusCode();
    if (statusCode.is2xxSuccessful()) {
        // 处理成功逻辑
    } else if (statusCode.is4xxClientError()) {
        // 处理客户端错误
    }
    
  • 若需要具体的HttpStatus枚举值,通过状态码数值转换:
    HttpStatusCode statusCode = responseEntity.getStatusCode();
    HttpStatus status = HttpStatus.valueOf(statusCode.value());
    if (status == HttpStatus.OK) {
        // 处理逻辑
    }
    

2. 排查并解决依赖冲突

执行Gradle命令查看依赖树,找出引入旧版Spring模块的第三方依赖:

./gradlew dependencies

找到包含旧版spring-web的依赖,在build.gradle中排除旧版依赖,确保所有Spring相关依赖使用Spring Boot 3.0.2对应的版本:

implementation('第三方依赖坐标') {
    exclude group: 'org.springframework', module: 'spring-web'
}

3. 确认Java版本符合要求

Spring Boot 3.x强制要求Java 17及以上,检查build.gradle中的Java配置:

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

若使用的Java版本低于17,升级至Java 17。

内容的提问来源于stack exchange,提问作者Sachin Mankotia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:15:11