尝试在 Kafka 中创建分区时出现 NoClassDefFoundError [英] NoClassDefFoundError when trying to create partitions in Kafka

查看:46
本文介绍了尝试在 Kafka 中创建分区时出现 NoClassDefFoundError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码:

  public KafkaReader(KafkaConsumer<Long, byte[]> consumer, String topic) {
    this.consumer = consumer;
    this.topicPartition = new TopicPartition(topic, ((consumer.partitionsFor(topic).get(0)).partition()));
    consumer.assign(Collections.singleton(topicPartition));
}

但是当正在执行 consumer.partitionsFor(topic) 时,我收到以下错误:

but when consumer.partitionsFor(topic) is being executed I get the following error:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode

at org.apache.kafka.common.requests.MetadataRequest$Builder.<clinit>(MetadataRequest.java:36)
at org.apache.kafka.clients.consumer.KafkaConsumer.partitionsFor(KafkaConsumer.java:1962)
at org.apache.kafka.clients.consumer.KafkaConsumer.partitionsFor(KafkaConsumer.java:1930)
at data.KafkaReader.<init>(KafkaReader.java:20)
at data.KafkaReaderTest.playground(KafkaReaderTest.java:12)

...引起:java.lang.ClassNotFoundException:com.fasterxml.jackson.databind.JsonNode在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)... 68 更多

... Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonNode at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 68 more

在 pom.xml 中,我定义了以下依赖项:

In pom.xml I defined the following dependencies:

   <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.8.10</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.10</version>
    </dependency>
</dependencies>

我发现的所有建议是将 jackson-annotations 和 -core 添加到 maven 依赖项中,但这没有帮助.

All I cound find as advice was to add jackson-annotations and -core to maven dependencies, but it did not help.

推荐答案

这是 2.6 版客户端的一个错误:https://issues.apache.org/jira/browse/KAFKA-10378

This is a bug in 2.6 version of the clients: https://issues.apache.org/jira/browse/KAFKA-10378

我建议在 2.6.1 或 2.7 发布之前坚持使用 2.5 客户端.除非有一项您离不开的重要 2.6 功能,否则建议包含您自己的依赖项是合理的.

I recommend sticking to 2.5 clients until 2.6.1 or 2.7 is released. Unless there is a critical 2.6 feature that you can't live without, and then the recommendation to include your own dependency is a sound one.

这篇关于尝试在 Kafka 中创建分区时出现 NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆