我刚刚在 Ubuntu 上安装了 scala
scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
但当我尝试运行斯卡拉命令用于交互式 shell 会话我遇到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/script/Compilable
at scala.tools.nsc.interpreter.ILoop.createInterpreter(ILoop.scala:126)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:908)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:906)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:906)
at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:906)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
答案1
您安装的 Scala 版本与您安装的 Java 版本不兼容。
Scala 与 Java 8 配合良好。您可能已经安装了 Java 9。解决方案是卸载 Java 并安装 Java 8。
尝试将 Java 9 或更新版本与 Scala 结合使用时,会出现更多问题。Oracle 已开始更改 Java 的打包和许可,这意味着 Scala 所需的某些类(导入)在 Java SE 9+ 中不存在。有些已移至 Java EE,有些已弃用。继续使用 Java 8 和 Scala。