scala EPFL Исключение в потоке "main" java.lang.NoClassDefFoundError: javax / script / Compilable - PullRequest
0 голосов
/ 17 марта 2019

Я полный нуб на Scala и программировании JVM. Команда, к которой я недавно присоединился, использует scala для создания программ, которые будут работать на Spark. Стек на работе стабилен и функционален, но его сложность не соответствует потребностям, которые у меня есть дома : просто тот, который имеет функциональную оболочку scala , чтобы немного лучше ознакомиться с язык, попробуйте вещи, получить синтаксис прямо перед добавлением " сложности среды "

[ NOTE ] Я просто хочу что-то глупое в том же духе этой документации (поэтому, пожалуйста, не отвечайте на основании компиляторов, sbt, IDE и т. Д. И т. Д.)

david@ripper$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
david@ripper$ scala -version 
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL

Вот что я получаю, когда обедаю в ракушке

david@ripper$ scala 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/script/Compilable
at scala.tools.nsc.interpreter.ILoop.createInterpreter(ILoop.scala:118)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:911)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:909)
at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:909)
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)

Кажется, что это классическая проблема, которую я сначала связал с тем фактом, что в моей системе установлена ​​ Oracle java 11 . Тем не менее, я подумал, что openjdk8 является стандартной JRE для всей системы со следующим:

update-alternatives --config java
Il existe 2 choix pour l'alternative java (qui fournit /usr/bin/java).
Sélection   Chemin Priorité  État
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-oracle/bin/java             1091      mode automatique
  1            /usr/lib/jvm/java-11-oracle/bin/java             1091      mode manuel
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      mode manuel

Что мне не хватает. Это не scala с использованием /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java. Я использую пакет scala по умолчанию, предоставленный в Debian 9

1 Ответ

0 голосов
/ 17 марта 2019

Оказывается, update-alternatives --config java не изменил JAVA_HOME PATH пользователя (который все еще указывал на java11). Кажется, что shell-оболочка не использует системную JRE по умолчанию, а скорее тот .bashrc (в моем случае .zshrc), на который указывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...