Scala Script Engine не обнаруживается при запуске в тесте с использованием Mill или SBT

У меня странное поведение относительно Testing Scala Script Engine.

У меня такой код:

val manager = new ScriptEngineManager(getClass.getClassLoader)
val e = manager.getEngineByExtension("scala")
log.info(s"Script Engine: $e from: ${manager.getEngineFactories.asScala.map(f => s"names: ${f.getNames} - extensions: ${f.getExtensions}")}")

Проведение теста с Mill или sbt Engine имеет значение null, даже если есть Engine for scala, как показано в сообщении журнала:

 Script Engine: null from: ArrayBuffer(Groovy Scripting Engine - extensions: [groovy], Scala REPL - extensions: [scala], juel - extensions: [juel])  

Выполнение того же теста с Intellij работает.

Script Engine: scala.tools.nsc.interpreter.shell.Scripted@3d5dfb97 from: ArrayBuffer(juel - [juel], Groovy Scripting Engine - [groovy], Scala REPL - [scala], Oracle Nashorn - [js])  

Обновление
После попытки получить Factory путем фильтрации я получаю исключение при получении Script Engine (factory.getScriptEngine):

javax.script.ScriptException: Failed to compile dynamicBindings
        at scala.tools.nsc.interpreter.shell.Scripted.<init>(Scripted.scala:105)
        at scala.tools.nsc.interpreter.shell.Scripted$.apply(Scripted.scala:278)
        at scala.tools.nsc.interpreter.shell.Scripted$Factory.getScriptEngine(Scripted.scala:271)
        at pme123.camundala.services.StandardApp$.$anonfun$layer$15(StandardApp.scala:43)
        at zio.internal.FiberContext.evaluateNow(FiberContext.scala:458)
        at zio.internal.FiberContext.$anonfun$evaluateLater$1(FiberContext.scala:687)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

0 ответов

Другие вопросы по тегам