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

执行Spring Boot接口调用代码时遭遇GraphQL的java.lang.NoSuchMethodError异常

问题描述

执行代码时遭遇GraphQL相关的java.lang.NoSuchMethodError异常,尽管REST API能正常返回响应,但代码仍抛出该错误。

相关配置与代码

pom.xml 内容

<parent>
  <groupId>org.springframework.boot</groupId>        
  <artifactId>spring-boot-starter-parent</artifactId>        
  <version>3.1.2</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>             
 <groupId>org.springframework.security.oauth</groupId>           
 <artifactId>spring-security-oauth2</artifactId>              
 <version>2.5.2.RELEASE</version>
</dependency>

Java 代码

业务逻辑实现

public RefundOrderDetailsResponse getRefundOrderDetails(String employeeId, String orderId) {
  UriComponentsBuilder builder =
    UriComponentsBuilder.fromUriString(refundOrderDetailsUrl)
      .queryParam("employeeId", employeeId)
      .queryParam("orderId", orderId);
  ResponseEntity<RefundOrderDetailsResponse>
    response = restTemplate.getForEntity(builder.toUriString(),
    RefundOrderDetailsResponse.class);
  return response.getBody();
}

DTO 定义

package com.octanner.commerceconfig.dto.refundorder;
import lombok.Data;

@Data
public class RefundOrderDetailsResponse {
    private String employeeId;
    private String firstName;
    private String lastName;
    private String orderId;
    private Double pointBalance;
    private String orderStatus;
    private boolean refundable;
}
问题分析与解决方案

java.lang.NoSuchMethodError本质是依赖版本不兼容:编译时存在的方法,运行时因依赖冲突找不到对应的类或方法。结合你的配置来看:

  • Spring Boot 3.1.2基于Spring Framework 6.x,而spring-security-oauth2:2.5.2.RELEASE是适配Spring Framework 5.x的旧版本,两者核心依赖存在版本冲突。
  • 异常关联GraphQL,说明项目中GraphQL相关依赖也可能与Spring Boot 3.x或旧OAuth2依赖存在版本不匹配,导致方法缺失。

解决步骤:

  1. 替换OAuth2依赖:Spring Boot 3.x需使用官方提供的OAuth2 starter,自动对齐版本,移除旧的spring-security-oauth2依赖:
<!-- 根据业务需求选择客户端或资源服务依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<!-- 或者 -->
<!-- <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency> -->
  1. 对齐GraphQL依赖版本:如果使用GraphQL,改用spring-boot-starter-graphql starter,无需手动指定版本,由Spring Boot parent统一管理:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-graphql</artifactId>
</dependency>
  1. 清理依赖缓存:执行mvn clean install清理本地仓库中可能存在的冲突依赖,重新构建项目。
  2. 定位具体冲突:如果以上步骤无效,查看异常堆栈中缺失方法的所属类,精准排查是哪个依赖的版本问题,针对性调整版本号。

内容的提问来源于stack exchange,提问作者yalamarthi lakshmi priyanka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:51:35