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

使用Embedded Kafka运行JUnit测试时出现NoSuchMethodError问题求助

解决Embedded Kafka JUnit测试中的NoSuchMethodError问题

你遇到的NoSuchMethodError本质是依赖版本不兼容导致的,核心问题出在Kafka、Spring Kafka Test、Scala版本的混乱匹配上:

问题根源

  1. 重复Kafka依赖冲突:同时引入kafka-2.3.1和kafka_2.11-2.0.1两个不同版本的Kafka包,类加载时版本混乱,部分类来自旧版本、部分来自新版本,导致目标方法找不到。
  2. Scala版本不匹配:kafka_2.11-2.0.1基于Scala 2.11编译,而你使用的scala-library-2.12.0是Scala 2.12版本,跨大版本的Scala二进制不兼容,引发类加载异常。
  3. Spring Kafka Test与Kafka版本不兼容:spring-kafka-test-2.5.6.RELEASE对应的Kafka客户端版本应为2.5.x(Spring Kafka与Kafka存在严格版本对应关系),你当前使用的Kafka版本(2.3.1/2.0.1)均不匹配,导致Spring Kafka Test调用了Kafka中已移除/签名变更的kafka.utils.TestUtils.boundPort方法。

解决方案

1. 清理依赖,统一Kafka版本

移除所有重复的Kafka依赖,只保留与Spring Kafka Test匹配的版本。spring-kafka-test-2.5.6.RELEASE对应Kafka 2.5.0版本,建议使用该版本。

2. 对齐Scala版本

选择与Kafka版本匹配的Scala版本:

  • 若使用kafka_2.12-2.5.0(基于Scala 2.12编译),搭配scala-library-2.12.x(如2.12.13)
  • 若使用kafka_2.11-2.5.0,搭配scala-library-2.11.x

3. 示例依赖配置(Maven)

<!-- Spring Kafka Test -->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka-test</artifactId>
    <version>2.5.6.RELEASE</version>
    <scope>test</scope>
</dependency>

<!-- Kafka核心依赖,与Spring Kafka Test版本匹配 -->
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.12</artifactId>
    <version>2.5.0</version>
    <scope>test</scope>
</dependency>

<!-- Scala Library,与Kafka的Scala版本匹配 -->
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.12.13</version>
    <scope>test</scope>
</dependency>

4. 验证依赖树

使用工具检查依赖树,确保无版本冲突:

  • Maven:mvn dependency:tree
  • Gradle:./gradlew dependencies
    若发现旧版本Kafka/Scala依赖被间接引入,需在对应依赖中排除冲突包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:50:26