Scala 文件可以编译,但不会在 Scala 2.11.12 和 JDK 11 上作为脚本运行

Jel*_*Cat 5 scala

的手册页scala说它应该能够运行“顶级对象或脚本文件”,但我无法让后者工作。

# This works:
scalac Example.scala && scala Example
# ...but this doesn't:
scala Example.scala
Run Code Online (Sandbox Code Playgroud)

错误信息总是

错误:编译服务器遇到致命条件:javax/tools/DiagnosticListener java.lang.ClassNotFoundException:javax.tools.DiagnosticListener

...但代码很简单:

object Exmple {
  def main(args: Array[String]): Unit = {
    System.out.println("Example")
  }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*lic 7

由于您使用的是 Scala 2.11.12 和 JDK 11,您可能会遇到问题Could not launch Scala 2.10.7, 2.11.12 REPL with Java 11 (without -nobootcp -ncworkaround) #10603,解决方法是

scala -nobootcp -nc Example.scala
Run Code Online (Sandbox Code Playgroud)

作为在 Linux 中使用 apt 安装 Scala 的替代方案,请考虑通过coursier一键安装 Scala

curl -fLo cs https://git.io/coursier-cli-"$(uname | tr LD ld)"
chmod +x cs
./cs setup
rm -f cs
Run Code Online (Sandbox Code Playgroud)

它应该安装 Scala 开发所需的所有组件。

提到 scala-runners 的相关答案:/sf/answers/4496197401/