为什么Spark应用程序在Eclipse中出现“线程中的异常”主“java.lang.NoClassDefFoundError”失败?

时间:2018-04-01 11:49:37

标签: eclipse scala apache-spark

我正在尝试使用JRE 1.8.0在Eclipse中运行Spark应用程序,并且遇到以下异常。为什么呢?

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
18/04/01 17:05:30 INFO SparkContext: Running Spark version 1.4.1
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
   at org.apache.spark.util.TimeStampedWeakValueHashMap.<init>(TimeStampedWeakValueHashMap.scala:42)
   at org.apache.spark.SparkContext.<init>(SparkContext.scala:277)
   at com.pooja.spark.training.sparkexamples.wordcount$.main(wordcount.scala:10)
   at com.pooja.spark.training.sparkexamples.wordcount.main(wordcount.scala)
Caused by: java.lang.ClassNotFoundException: scala.collection.GenTraversableOnce$class
   at java.net.URLClassLoader.findClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   ... 4 more

1 个答案:

答案 0 :(得分:2)

“Spark版本1.4.1”?!那太旧了。除非您知道自己在做什么,否则请升级到最新的1.x版本链或2.3.0(如果可能)。

  

线程“main”中的异常java.lang.NoClassDefFoundError:scala / collection / GenTraversableOnce $ class

运行时异常是因为您的运行时环境中没有可用的Scala库(在JVM的CLASSPATH中)。您必须告诉Eclipse使用Scala作为依赖项,在运行Spark应用程序时必须将其包含在JVM中。

我建议使用Eclipse和sbtApache Maven等工具来管理依赖项。

虽然我们正在努力,但我也建议您在Apache Spark Examples中尝试使用Spark示例。