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

SpringBoot集成KafkaAvroDeserializer启动报错:java.lang.ClassNotFoundException: io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe

SpringBoot中使用KafkaAvroDeserializer启动报错:ClassNotFoundException问题排查

我最近在SpringBoot项目里尝试用KafkaAvroDeserializer处理Avro格式的Kafka消息,结果启动项目时直接抛出了ClassNotFoundException,找不到io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe类。下面是我的相关配置、代码和异常信息,想问问是不是缺失了什么Jar包?

我的pom依赖配置

<!-- avro -->
<dependency>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro</artifactId>
    <version>1.9.2</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-avro-serializer</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-schema-registry-client</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>common-utils</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>common-config</artifactId>
    <version>6.0.0</version>
</dependency>

消费者配置代码片段

@Bean
public Map<String, Object> consumerConfigs() {
    Map<String, Object> conConfigMap = new HashMap<>();
    conConfigMap.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
    // 省略其他配置...
    conConfigMap.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
    conConfigMap.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class);
    conConfigMap.put("schema.registry.url", schemaRegistryUrl);
    return conConfigMap;
}

启动时的异常信息

Caused by: java.lang.ClassNotFoundException: io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_161]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_161]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_161]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_161]
    ... 56 common frames omitted

问题解决方法

你确实缺失了关键的Jar包:kafka-schema-serializer,AbstractKafkaSchemaSerDe类就包含在这个依赖中。虽然kafka-avro-serializer依赖于它,但可能因为依赖传递失效或者Maven仓库配置问题,没有自动引入,所以需要手动添加:

<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-schema-serializer</artifactId>
    <version>6.0.0</version>
</dependency>

另外还要注意:Confluent的官方Jar包并不在Maven中央仓库中,如果你的项目还没配置Confluent的Maven仓库,需要在pom.xml里添加以下仓库配置,否则可能会出现依赖下载失败的问题:

<repositories>
    <repository>
        <id>confluent</id>
        <url>https://packages.confluent.io/maven/</url>
    </repository>
</repositories>

添加完这两个配置后,重新构建项目,ClassNotFoundException的问题应该就能解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:02:43