【问题标题】:scala EPFL Exception in thread "main" java.lang.NoClassDefFoundError: javax/script/Compilable线程“主”java.lang.NoClassDefFoundError中的scala EPFL异常:javax/script/Compilable
【发布时间】:2019-03-17 13:09:53
【问题描述】:

我完全是 Scala 和 JVM 编程的菜鸟。我最近加入的团队使用 scala 构建要在 Spark 上运行的程序。工作中的堆栈稳定且功能强大,但它的复杂性与我在家的需求不匹配:仅具有功能性scala shell以使您更加熟悉的需求在添加任何“环境复杂性

之前,使用语言,尝试一些事情,获得​​正确的语法

[注意] 我只是想要一些与this documentation 相同的愚蠢的东西(所以,请不要根据编译器、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。我正在使用 Debian 9

中提供的默认 scala 包

【问题讨论】:

    标签: java scala debian scala-shell


    【解决方案1】:

    原来,update-alternatives --config java 没有改变用户 PATH 的 JAVA_HOME(仍然指向 java11)。似乎 scala-shell 不使用系统的默认 JRE,而是使用 .bashrc(在我的情况下为 .zshrc)指向的那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      相关资源
      最近更新 更多