【问题标题】:Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.confluent.kafka.serializers.KafkaAvroSerializerConfig since 6.0.0原因:java.lang.NoClassDefFoundError:从 6.0.0 开始无法初始化类 io.confluent.kafka.serializers.KafkaAvroSerializerConfig
【发布时间】:2021-11-04 17:35:47
【问题描述】:

我正在开发一个 flink (v.1.13.2) 应用程序,该应用程序应该将一些对象发布到我的 Kafka 代理。 对于模式验证,我使用 Confluent Schema Registry。

我之前在 5.2.0 版本中使用过该库(也尝试过其他 5.x.x 版本):

        <dependency>
            <groupId>io.confluent</groupId>
            <artifactId>kafka-avro-serializer</artifactId>
            <!--<version>5.x.x</version>--> 
            <version>6.2.0</version>
        </dependency>

这似乎可行,但是在将架构注册到注册表时出现了奇怪的行为。架构只是“字节”经过调查,我发现“AvroSchemaUtils”中的可疑部分已更改。

https://github.com/confluentinc/schema-registry/blob/a2f80f30d6713c50ee54c47885bcde2945932660/client/src/main/java/io/confluent/kafka/schemaregistry/avro/AvroSchemaUtils.java#L88

所以我尝试将库更新到下一个工作版本。 在我更新到 6.x.x 之后。我收到以下错误:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.confluent.kafka.serializers.KafkaAvroSerializerConfig
    at io.confluent.kafka.serializers.KafkaAvroSerializer.configure(KafkaAvroSerializer.java:50)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:369)
    ... 23 more

如何找出这里出了什么问题?

【问题讨论】:

  • 如果您共享了生成消息的 Flink 代码,将会很有用。如果 Flink 模式是 序列化之前的字节,那么这就是将被注册的内容

标签: serialization apache-kafka apache-flink avro


【解决方案1】:

这可能是问题所在。 Kafka Avro Serializer升级后,依赖的kafka客户端从kafka_2.12升级到kafka_2.13 https://mvnrepository.com/artifact/io.confluent/kafka-avro-serializer/6.2.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2012-10-10
    • 2021-10-31
    • 1970-01-01
    • 2013-08-08
    • 2020-09-27
    相关资源
    最近更新 更多