如何在 Eclipse 下使用自定义 Kafka 生产者修复 NoClassDefFoundError?

How to fix NoClassDefFoundError with custom Kafka producer under Eclipse?

我正在尝试在我的项目中包含 Kafka 模块。

我在 eclipse 中添加了以下 jar 作为外部 jar 库,并且还更新了 build.xml 以包含对 jar 的引用:

我写了一个示例 Producer class

public class KafkaWriteRequestProducer extends Thread
{
private final String topic;
private final KafkaProducer<Integer, byte[]> producer;
private final WriteRequest writeRequest;

public KafkaWriteRequestProducer(String topic, WriteRequest writeRequest)
{
    this.topic = topic;
    this.writeRequest = writeRequest;

    //Initialize the config for Kafka Producer
    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    props.put("client.id",  "KafkaProducer");
    props.put("key.serialzer",  "org.apache.kafka.common.serialization.IntegerSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");

    producer = new KafkaProducer<Integer, byte[]>(props);       
}
}

在我开始这个项目之前,我已经确保 Zookeeper 和 Kafka 代理是 运行。但是,我在尝试实例化 new KafkaProducer() 时看到 NoClassDefFoundError()

我是不是遗漏了什么明显的东西?

为完成起见,我看到错误的原因是因为我没有在类路径中指定 jars。有一次,我将 jars 添加到类路径中,效果非常好。