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

Keploy与SpringBoot集成遇NoSuchMethodError错误求助

问题描述
  • 环境:Keploy 1.1.5,SpringBoot 2.7.10,集成Redis、Mongo、RabbitMQ、Liquibase
  • 现象:应用能正常启动,但访问接口时抛出错误:
Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: io.keploy.grpc.stubs.Service.access$35500()Lcom/google/protobuf/Descriptors$Descriptor;
  • 后续尝试将Keploy升级到最新版本,结果应用启动阶段直接出现其他异常

项目核心依赖片段:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <version>2.7.10</version>
</dependency>

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>3.6.0</version>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <version>2.7.10</version>
</dependency>
解决方案建议

1. 排查Protobuf版本依赖冲突

NoSuchMethodError 基本是类路径里存在多版本Protobuf库导致的——Keploy的grpc依赖和SpringBoot传递过来的Protobuf版本不匹配,找不到对应的方法。

  • 执行 mvn dependency:tree 输出项目所有依赖树,找出Protobuf的冲突版本
  • 要么在Keploy依赖里排除它自带的Protobuf,要么在dependencyManagement里强制指定统一版本(推荐用SpringBoot 2.7.x兼容的3.21.x系列):
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.21.12</version>
        </dependency>
    </dependencies>
</dependencyManagement>

2. 匹配Keploy和SpringBoot的兼容版本

Keploy不同版本对SpringBoot的支持有差异,SpringBoot 2.7.x是旧稳定版,别直接升最新Keploy,先找Keploy官方明确支持2.7.x的版本(比如1.2.x系列,具体看发布说明)。如果非要用最新Keploy,就得把SpringBoot升到它支持的版本(比如3.x),但这可能要调整Redis、Mongo等其他组件的版本适配。

3. 检查组件代理兼容性

你的项目用了Redis(Jedis 3.6.0)、Mongo、RabbitMQ、Liquibase,得确认Keploy 1.1.5是否支持这些组件的当前版本。要是有不兼容的,就把组件版本调到Keploy支持的范围里。

4. 清理依赖缓存

有时候本地依赖缓存会搞出版本问题,执行下面的命令清理后重新构建:

mvn clean install -U

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:34