Запуск интерактивной оболочки scala из командной строки

Я только что установил Scala на Ubuntu

scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

но когда я пытаюсь запустить команду scala для сеанса интерактивной оболочки, у меня появляется следующая ошибка:

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.

Другие вопросы по тегам