【发布时间】:2020-12-05 19:42:46
【问题描述】:
在使用 SBT(版本 1.3.13)打包并执行 Scala 应用程序(build.sbt 版本为 2.12.0,但实际上安装了 2.13.3)后,我收到以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.wrapRefArray([Ljava/lang/Object;)Lscala/collection/mutable/WrappedArray;
at org.example.GreetWorld$.printMessage(GreetWorld.scala:5)
导致错误的源文件GreetWorld.scala如下所示:
package org.example
object GreetWorld {
def printMessage(theMessage:String):Unit = {
println(s"${theMessage} from me")
}
}
调用上述文件的主文件如下所示:
package org.example
object HelloWorld {
def main(args: Array[String]) = {
GreetWorld.printMessage("Hello")
}
}
有人知道根本原因吗?起初我认为这与选择 Java 11 的 SBT shell 有关,但即使将我的 Windows 的 JAVA_HOME 更改为 Java 8,我仍然遇到同样的错误。在 SBT Shell 中编译和运行它可以正常工作。只有 JAR 执行失败。
【问题讨论】: