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

使用Confluent Avro的Kafka Connect找不到SchemaRegistryClient类问题

Kafka Connect Avro转换器实例化错误排查

环境信息

  • JDK版本:17
  • Apache Kafka版本:3.5.1
  • Kafka Connect模式:分布式
  • 使用插件:Confluent Avro转换器

连接器配置

{
    "connector.class": "...",
    "tasks.max": "3",
    "name": "test-connector",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "value.converter.schema.registry.url": "http://localhost:8081",
    "errors.log.include.messages": "true",
    "errors.log.enable": "true"
}

报错日志

org.apache.kafka.connect.errors.ConnectException: Instantiation error
        at org.apache.kafka.connect.runtime.isolation.Plugins.newPlugin(Plugins.java:85)
        at org.apache.kafka.connect.runtime.isolation.Plugins.newConverter(Plugins.java:327)
        at org.apache.kafka.connect.runtime.Worker.startTask(Worker.java:622)
        at org.apache.kafka.connect.runtime.Worker.startSourceTask(Worker.java:548)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder.startTask(DistributedHerder.java:1833)
        at org.apache.kafka.connect.runtime.distributed.DistributedHerder.lambda$getTaskStartingCallable$32(DistributedHerder.java:1850)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: io/confluent/kafka/schemaregistry/client/SchemaRegistryClient
        at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
        at java.base/java.lang.Class.getConstructor0(Class.java:3578)
        at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2754)
        at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:396)
        at org.apache.kafka.connect.runtime.isolation.Plugins.newPlugin(Plugins.java:83)
        ... 9 more
Caused by: java.lang.ClassNotFoundException: io.confluent.kafka.schemaregistry.client.SchemaRegistryClient
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
        at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:136)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        ... 15 more

可能的问题点

  • 依赖jar包不完整:仅存在kafka-schema-registry-client-7.5.0.jar不足以支撑AvroConverter运行,还需要schema-registry-common、kafka-schema-registry-client-api等关联依赖包。需确认是否完整解压了Confluent插件的zip包,而非仅单独放置单个jar。
  • 插件目录结构不符合规范:Kafka Connect要求每个插件独立存放在单独的子目录下(如plugins/confluent-avro-converter/下存放该插件的所有jar)。若所有插件jar直接堆在plugins根目录,会触发类加载隔离机制,导致依赖类无法被找到。
  • 版本兼容性冲突:虽然Confluent 7.5.x理论上兼容Apache Kafka 3.5.x,但需确认插件jar是否适配JDK17。部分旧版本依赖可能未针对JDK17的模块化或字节码版本做适配,导致类加载失败。
  • 类加载器隔离问题:检查plugin.path配置是否指向包含完整插件子目录的路径,而非单个jar文件。同时排查Connect的libs目录是否存在重复的schema registry客户端jar,引发类加载冲突。
  • 文件权限不足:确认Connect运行用户对插件目录及jar包有读取权限,若权限缺失,ClassLoader无法加载jar内的类文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:55:27