0

我对测试 Scala 脚本引擎有一个奇怪的行为。

我有以下代码:

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}")}")

运行测试Millsbt引擎为空,即使有一个用于 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.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)
4

0 回答 0