【问题标题】:Error when trying to use kafka-client 2.6尝试使用 kafka-client 2.6 时出错
【发布时间】:2021-01-19 22:04:33
【问题描述】:

我正在学习 Kafka,当我尝试实现一个只会发送“Hello World”的简单生产者时

package com.github.joe.kafka.tutorial1;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;

public class ProducerDemo {
    public static void main(String[] args) {

        Properties properties = new Properties();
        String bootstrapServers = "127.0.0.1:9092";
        String topic = "first_topic";
        properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers);
        properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());

        KafkaProducer<String,String> producer = new KafkaProducer<String, String>(properties);

        ProducerRecord<String,String> record = new ProducerRecord<String, String>(topic,"Hello World");

        producer.send(record);
        producer.flush();
        producer.close();

    }
}

问题是当我使用 kafka-client v2.0.0 时它可以工作,但是当我使用 kafka-client 2.6.0 时它会失败并且我收到以下错误:

[kafka-producer-network-thread | producer-1] ERROR org.apache.kafka.common.utils.KafkaThread - Uncaught exception in thread 'kafka-producer-network-thread | producer-1':
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode
    at org.apache.kafka.common.requests.ApiVersionsRequest$Builder.<clinit>(ApiVersionsRequest.java:36)
    at org.apache.kafka.clients.NetworkClient.handleConnections(NetworkClient.java:910)
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:555)
    at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:325)
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:240)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonNode
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 6 more
[main] INFO org.apache.kafka.clients.producer.KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms.

【问题讨论】:

  • 嗨@mike,看起来对于 kafka-client 2.6.0 我需要为依赖项添加“Jackson Databind”,当我添加它时

标签: java maven apache-kafka


【解决方案1】:

事实证明,对于 Kafka-client 2.6.0,还有一个额外的依赖项: 杰克逊数据绑定 这不是 2.0.0 版所要求的

【讨论】:

    【解决方案2】:

    上述建议对我有用。我添加了解决问题的以下依赖项。

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    

    【讨论】:

    • 这应该是一条评论
    猜你喜欢
    • 2014-10-15
    • 2023-01-26
    • 2020-08-10
    • 2021-11-06
    • 2018-10-28
    • 2017-07-18
    • 2017-02-08
    • 2018-12-02
    • 2020-09-07
    相关资源
    最近更新 更多