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

发布AVRO Kafka记录时遭遇NoSuchMethodError错误求助

java.lang.NoSuchMethodError: 'java.lang.String org.apache.avro.Schema.toString(java.util.Collection, boolean)' 解决指南

这个错误的核心原因是Avro依赖版本冲突:你的项目中同时存在不同版本的Avro库,旧版本的org.apache.avro:avro包没有提供Schema.toString(Collection, boolean)这个方法,而代码运行时加载了旧版本的类,导致方法找不到。

以下是具体解决步骤:

  • 排查依赖冲突
    先找出项目中所有Avro相关依赖的版本:

    • Maven项目执行:mvn dependency:tree | grep avro
    • Gradle项目执行:./gradlew dependencies | grep avro
      查看输出结果,确认是否存在多个不同版本的Avro依赖,尤其是间接依赖引入的旧版本。
  • 强制统一Avro版本
    通过依赖管理机制强制项目使用同一版本的Avro(建议选用1.11.x及以上的稳定版本):

    • Maven配置:
      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>org.apache.avro</groupId>
                  <artifactId>avro</artifactId>
                  <version>1.11.0</version>
              </dependency>
          </dependencies>
      </dependencyManagement>
      
    • Gradle配置:
      configurations.all {
          resolutionStrategy.force 'org.apache.avro:avro:1.11.0'
      }
      
  • 兼容Kafka相关依赖的Avro版本
    如果使用了Confluent的Kafka Avro序列化器(如io.confluent:kafka-avro-serializer),要确保Confluent版本与Avro版本兼容——比如Confluent 7.4.x对应Avro 1.11.x,避免因序列化器引入的传递依赖造成版本冲突。

  • 清理缓存并重新构建
    执行清理和构建命令,确保旧依赖被清除,新版本依赖生效:

    • Maven:mvn clean install
    • Gradle:./gradlew clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:35:57