Запуск интерактивной оболочки 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.