I'm trying to integrate an embedded kafka in scala 2.11 for my tests. However I'm getting the following error which I could not understand.
java.lang.NoClassDefFoundError: org/apache/zookeeper/AsyncCallback$MultiCallback
All the versions of kafka libraries are same. Can you please tell what is wrong in my code?
Here is my dependencies
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql-kafka-0-10_2.11</artifactId>
<version>2.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.github.embeddedkafka</groupId>
<artifactId>embedded-kafka_2.11</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
Here is how I start/stop embedded kafka server.
implicit val embedKafkaConfig = EmbeddedKafkaConfig(kafkaPort = 7000, zooKeeperPort = 7001)
implicit val stringDeserializer = new StringDeserializer()
implicit val stringSerializer = new StringSerializer
Before("") { _: Scenario =>
EmbeddedKafka.start()(embedKafkaConfig)
}
After("") { _: Scenario =>
EmbeddedKafka.stop()
}
And the error:
kafka.server.KafkaServer - Fatal error during KafkaServer startup. Prepare to shutdown
java.lang.NoClassDefFoundError: org/apache/zookeeper/AsyncCallback$MultiCallback
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1857)
at kafka.server.KafkaServer.kafka$server$KafkaServer$$createZkClient$1(KafkaServer.scala:374)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:399)
at kafka.server.KafkaServer.startup(KafkaServer.scala:207)
at net.manub.embeddedkafka.ops.KafkaOps$class.startKafka(kafkaOps.scala:52)
at net.manub.embeddedkafka.EmbeddedKafka$.startKafka(EmbeddedKafka.scala:50)
at net.manub.embeddedkafka.ops.KafkaOps$class.startKafka(kafkaOps.scala:60)
at net.manub.embeddedkafka.EmbeddedKafka$.startKafka(EmbeddedKafka.scala:50)
at net.manub.embeddedkafka.ops.RunningKafkaOps$class.startKafka(kafkaOps.scala:88)
at net.manub.embeddedkafka.EmbeddedKafka$.startKafka(EmbeddedKafka.scala:50)
at net.manub.embeddedkafka.EmbeddedKafka$.start(EmbeddedKafka.scala:68)