2017-06-15 3 views
0

同じKafka/Spark Streamingプロジェクトにある2つのアプリケーションの2つのjarをエクスポートしました。 カフカプロデューサーの瓶がうまくいきます。NoClassDefFoundError:jarをエクスポートした後のkafka/serializer/StringDecoder

NoClassDefFoundError: kafka/serializer/StringDecoder

彼らは私が明らかにjarはEclipseの外で働くようにするためにエクスポートした同じ依存関係のフォルダを共有:スパーク消費者とのjarファイルは、このエラーを返します。

Eclipseでは両方とも正常です。

どうすればこの問題を解決できますか?

+0

あなたのクラスパスでカフカの瓶ですか? – Gaurav

+0

クラスパスにspark-streaming-kafkaがあります。それで十分じゃない? – sirdan

+0

しかし、stringDecoderはkafkaモジュールの一部ですkafka-streamingには文字列デコーダが含まれているかどうかを確認してください – Gaurav

答えて

1

spark-streaming-kafkaだけでなく、クラスパスにKafka自体が必要です。 Eclipseでは、ビルドシステムがすべての依存関係を取得し、Eclipseがその依存関係を統合するため、実行します。

I looked into the jar of spark-streaming-kafka and it contains the .class file that is named in the error: org.apache.spark.streaming.kafka.KafkaUtils$.createStream(Ka‌​fkaUtils.scala:55). So I can't understand why he misses this class.

おそらくあなたはそれがorg.apache.spark.streaming.kafka.KafkaUtils$が含まれていますが、JVMは、それをロードしようとしたとき、それはそこにされていない、それはkafka.serializer.StringDecoderを含む他のクラスを、必要があることを発見。意味

+0

助けてくれてありがとう。では、これを修正するためにインポートする必要があると思われるジャンパーはどれですか?私はSparkとKafkaの互換性のないバージョンで問題を抱えていたからです。 – sirdan

+0

あなたは本当にこれに答えるのに十分な情報を提供していません。 https://stackoverflow.com/questions/275120/java-how-do-i-know-which-jar-file-to-use-given-a-class-nameを参照してください。 –

+0

解決済み。私はMavenの依存関係だけをインポートしたKafka jarファイルをすべて見逃してしまったので、Eclipseは実際にエクスポートすることができませんでした。 あなたのヒントがこの問題を解決しました。ありがとうございます。 – sirdan

関連する問題