NoClassDefFoundError:org / apache / kafka / common / requests / AbstractResponse

时间:2017-11-24 10:29:28

标签: apache-kafka apache-storm

在我将现有的Production Kafka Cluster从Kafka0.8.2.1升级到Kafka0.11.0.1后,错误开始了。

无法为新版本的库初始化kafka配置。

在我们的项目中,我们使用storm来处理实时Kafka主题

Storm Version: 1.0.2
Storm-Kafka version: 1.0.2
Kafka-Version: 0.11.0.1 with Scala 2.11

错误日志:

java.lang.NoClassDefFoundError: org/apache/kafka/common/requests/AbstractResponse
    at org.apache.storm.kafka.KafkaConfig.<init>(KafkaConfig.java:36) ~[storm-kafka-1.0.2.jar:1.0.2]
    at org.apache.storm.kafka.KafkaConfig.<init>(KafkaConfig.java:47) ~[storm-kafka-1.0.2.jar:1.0.2]
    at org.apache.storm.kafka.trident.TridentKafkaConfig.<init>(TridentKafkaConfig.java:30) ~[storm-kafka-1.0.2.jar:1.0.2]

我不确定主要原因,但我怀疑它是用于kafka 11的scala版本。

2 个答案:

答案 0 :(得分:0)

确保类路径上有org.apache.kafka:kafka-clients以及org.apache.kafka:kafka。像Maven这样的工具应该为你做这个,但也许你手动处理依赖关系?如果是这样,您希望将此处的依赖项https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.11/0.8.2.1与此处的新依赖项https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.11/0.11.0.1进行比较

答案 1 :(得分:0)

我遇到了同样的问题,经过几天(!),我终于找到了一个我想分享的解决方案

问题是项目的eclipse引用库中的kafka-clients包的版本。尽管使用了maven更新,它保留了0.8.2.1版本。但正确的是0.10.2.1。所以,我使用

从maven导入了正确的库

mvn dependency:get -Dartifact=org.apache.kafka:kafka-clients:0.10.2.1

并从类路径中删除旧版本,它的工作原理! 希望这可以帮助 ! 米歇尔。