scala的交互模式启动时出现这个问题:
完整报错如下:
$scala
Shell 传递参数实例!
执行的文件名:/home/appleyuchi/scripts/scala/scala.sh
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)
解决方案:
/home/appleyuchi/bigdata/scala-2.11.8/bin/scala
/home/appleyuchi/bigdata/scala-2.11.8/bin/scalac
各自在文件中加入一句:
export JAVA_HOME=~/Java/jdk1.8.0_131
这个解决方案的原理是用局部JAVA_HOME变量覆盖~/.bashrc中的JAVA_HOME变量。
原因:
与JDK9不兼容,使用JDK8即可.