NoClassDefFoundError:导出jar后的kafka / serializer / StringDecoder

时间:2017-06-15 08:46:42

标签: java eclipse jar apache-kafka spark-streaming

我已经在同一个Kafka / Spark Streaming项目中导出了两个我有两个应用程序的jar。 与卡夫卡制片人的罐子工作正常。 Spark Consumer的jar返回此错误:

  

NoClassDefFoundError:kafka / serializer / StringDecoder

它们共享相同的依赖项文件夹,我明显将其导出,以使jar在Eclipse之外工作。

在Eclipse中,它们都可以正常工作。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你需要Kafka本身的课程路径,而不仅仅是spark-streaming-kafka。在Eclipse中,您可以这样做,因为您的构建系统会检索所有依赖项,而Eclipse会与它集成。

  

我查看了spark-streaming-kafka的jar,它包含错误中命名的.class文件:org.apache.spark.streaming.kafka.KafkaUtils $ .createStream(Ka fkaUtils.scala:55 )。所以我无法理解为什么他会错过这门课。

大概你的意思是包含org.apache.spark.streaming.kafka.KafkaUtils$,但是当JVM尝试加载它时,它会发现它需要其他类,包括kafka.serializer.StringDecoder,但不存在。