Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.confluent.kafka.serializers.KafkaAvroSerializerConfig since 6.0.0

Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.confluent.kafka.serializers.KafkaAvroSerializerConfig since 6.0.0

我正在开发一个 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

如何找出这里的错误?

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