user3421442 user3421442 - 4 months ago 12
Java Question

How to fix NoClassDefFoundError with custom Kafka producer under Eclipse?

I am trying to include Kafka module in my project.

I have added the following jars as external jar libraries in eclipse and have also update the build.xml to include the references to the jar:


  • kafka-clients-0.8.2.0.jar

  • kafka_2.10-0.8.2.0.jar

  • scala-library-2.10.4.jar



I wrote a sample 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);
}
}


I have ensured that Zookeeper and Kafka brokers are running before I started this project. However, I am seeing
NoClassDefFoundError()
when it is trying to instantiate the
new KafkaProducer()
.

Am I missing something obvious?

Answer Source

For completion sake, the reason why I was seeing the error was because I didn't have the jars specified in the classpath. Once, I added the jars to the classpath, it worked perfectly well.