为什么Scala 2.11和Spark with扇贝会导致;java.lang.NoSuchMethodError:scala.reflect.api.JavaUniverse.runtimeMirror";?

为什么Scala 2.11和Spark with扇贝会导致;java.lang.NoSuchMethodError:scala.reflect.api.JavaUniverse.runtimeMirror";?,scala,apache-spark,sbt,Scala,Apache Spark,Sbt,我使用的是Scala 2.11、Spark和Scallop()。我使用sbt构建了一个没有Spark提供的依赖项的应用程序胖jar(位于:analysis/target/scala-2.11/dtex-analysis\u 2.11-0.1.jar) 我能够在sbt中很好地运行程序 我尝试从命令行运行它,如下所示: time ADD_JARS=analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar java -cp /Applications/

我使用的是Scala 2.11、Spark和Scallop()。我使用sbt构建了一个没有Spark提供的依赖项的应用程序胖jar(位于:
analysis/target/scala-2.11/dtex-analysis\u 2.11-0.1.jar)

我能够在sbt中很好地运行程序

我尝试从命令行运行它,如下所示:

time ADD_JARS=analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar java -cp /Applications/spark-1.2.0-bin-hadoop2.4/lib/spark-assembly-1.2.0-hadoop2.4.0.jar:analysis/target/scala-2.11/dtex-analysis_2.11-0.1.jar com.dtex.analysis.transform.GenUserSummaryView -d /Users/arun/DataSets/LME -p output -s txt -o /Users/arun/tmp/LME/LME
我收到以下错误消息:

线程“main”java.lang.NoSuchMethodError中出现异常: runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror; 位于org.rogach.scallop.package$(package.scala:37) org.rogach.scallop.package$(package.scala)位于 com.dtex.analysis.transform.genuersumaryView$Conf.delayedEndpoint$com$dtex$analysis$transform$genuersumaryView$Conf$1(genuersumaryView.scala:27) 在 com.dtex.analysis.transform.GenuerSummaryView$Conf$delayedInit$body.apply(GenuerSummaryView.scala:26) 在scala.Function0$class.apply$mcV$sp(Function0.scala:40)中 scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 位于org.rogach.scallop.AfterInit$class.delayedInit(AfterInit.scala:12) 在org.rogach.scallop.ScallopConf.delayedInit上(ScallopConf.scala:26) 在 com.dtex.analysis.transform.GenuerSummaryView$Conf.(genuerSummaryView.scala:26) 在 com.dtex.analysis.transform.GenuerSummaryView$.main(GenuerSummaryView.scala:54) 在 com.dtex.analysis.transform.genuersumaryView.main(genuersumaryView.scala)


问题是您使用了不兼容的Scala版本,即Spark是用Scala 2.10编译的,而您试图使用Scala 2.11

将所有内容移动到Scala 2.10版本,并确保同时更新SBT


您也可以尝试编译Scala 2.11.7的Spark源代码并使用它。

我在Spark submit中也遇到了同样的问题,在我的例子中:

Spark作业是使用Scala 2.10.8编译的

在集群上编译Spark时使用的Scala版本:Scala 2.11.8

要检查群集上的Spark版本和Scala版本,请使用“Spark shell”命令


使用Scala 2.11.8编译Spark作业源代码后,提交了作业&它成功了

看起来您的类路径缺少scala-reflect.jar