【问题标题】:Scala Runtime errors calling program on Spark Job Server在 Spark 作业服务器上调用程序的 Scala 运行时错误
【发布时间】:2026-02-08 16:25:04
【问题描述】:

我使用 spark 1.6.2 和 Scala 11.8 来编译我的项目。生成的带有依赖项的 uber jar 放在 Spark Job Server 中(似乎使用 Scala 10.4(.sh 文件中指定的 SCALA_VERSION=2.10.4)

启动服务器,上传context/app jars没有问题。但是在运行时,会出现以下错误

java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror

Why do Scala 2.11 and Spark with scallop lead to "java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror"? 谈论使用 Scala 10 编译源代码。是真的吗?

有什么建议请...

【问题讨论】:

  • “这是真的吗?”是的。

标签: scala apache-spark spark-jobserver


【解决方案1】:

使用 scala 2.10.4 编译您的项目。否则你也需要用11编译spark。

【讨论】:

  • 确实有效。谢谢。你能解释一下为什么吗?大多数人似乎都同意使用 11.*
  • 你也必须使用 scala 11 编译 spark
  • 好的。我运行一个 maven 项目来下载 spark 依赖项和 eclipse 来编译我的项目以及 maven 依赖项。此时,SJS jar 也被添加到 maven repo 中。现在,将 scala 编译器版本从 10 更改为 11 就足够了吗?这正是我正在做的。我错过了什么吗?
  • 不,我指的是 spark 二进制文件。在您的部署环境中会有 spark 二进制文件。这些应该用 scala 11 编译。