ScalaEngine Scala не может оценить скомпилированный скрипт во второй раз - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий код:

val engine = new ScriptEngineManager().getEngineByName("scala").asInstanceOf[ScriptEngine with Invocable with Compilable]
  val script = """def incrementN(n: Int)= {
                 |  n+1
                 |}
                 |
                 |incrementN(n.asInstanceOf[Int])"""
  engine.getContext.setAttribute("n", 0,  ScriptContext.ENGINE_SCOPE)
  val compiled = engine.compile(script)
  println(compiled.eval())
  println(compiled.eval())

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

Исключение в потоке "main" scala.tools.nsc.interpreter.IMain $ ReadEvalPrint $ EvalException: не удалось загрузить '$ line6. $ Eval': $ line6. $ Eval в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.evalError (IMain.scala: 745) на scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.load (IMain.scala: 749) в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.evalClass $ lzycompute (IMain.scala: 752) в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.evalClass (IMain.scala: 752) в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.evalMethod (IMain.scala: 795) на scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.call (IMain.scala: 730) в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.callEither (IMain.scala: 739) в scala.tools.nsc.interpreter.IMain $ ReadEvalPrint.evalEither (IMain.scala: 754) на scala.tools.nsc.interpreter.Scripted $ WrappedRequest. $ anonfun $ evalEither $ 3 (Scripted.scala: 208) at scala.util.DynamicVariable.withValue (DynamicVariable.scala: 58) в scala.Console $ .withIn (Console.scala: 226) на scala.tools.nsc.interpreter.Scripted $ WrappedRequest. $ anonfun $ evalEither $ 2 (Scripted.scala: 208) at scala.util.DynamicVariable.withValue (DynamicVariable.scala: 58) на scala.Console $ .withErr (Console.scala: 192) на scala.tools.nsc.interpreter.Scripted $ WrappedRequest. $ anonfun $ evalEither $ 1 (Scripted.scala: 207) at scala.util.DynamicVariable.withValue (DynamicVariable.scala: 58) на scala.Console $ .withOut (Console.scala: 163) в scala.tools.nsc.interpreter.Scripted $ WrappedRequest.evalEither (Scripted.scala: 206) на scala.tools.nsc.interpreter.Scripted $ WrappedRequest. $ anonfun $ eval $ 1 (Scripted.scala: 247) на scala.tools.nsc.interpreter.Scripted.withScriptContext (Scripted.scala: 124) на scala.tools.nsc.interpreter.Scripted $ WrappedRequest.eval (Scripted.scala: 225) at javax.script.CompiledScript.eval (CompiledScript.java:106)

версия scala - 2.12.7 Java-версия "1.8.0_144"

Не могли бы вы помочь мне разобраться, в чем может быть эта проблема?

...