对于getEngineByName("JavaScript"),Sbt 0.13 ScriptEngine为空

nau*_*nau 3 javascript scala sbt

当我运行getEngineByName("JavaScript")在sbt 0.13 中使用的测试时,该方法返回null.安全代码适用于sbt 0.12.x.

尝试在不同的环境:Windows 7和Mac - 同样的问题.

我试图手动设置javaHomesbt.

test:dependencyClasspath 包含 .ivy2/cache/rhino/js/jars/js-1.6R7.jar

知道什么是错的吗?

Set*_*sue 9

哈哈,事实证明我几个月前自己就遇到过这个问题,并且忘掉了一切!但后来我在我自己的源代码中发现了这个:

// the (null) became necessary when we upgraded to sbt 0.13. I don't understand why.
// classloaders, go figure! - ST 8/26/13
val engine =
  (new javax.script.ScriptEngineManager(null))
    .getEngineByName("rhino")
    .ensuring(_ != null, "JavaScript engine unavailable")
Run Code Online (Sandbox Code Playgroud)

因此将null传递给ScriptEngineManager构造函数是修复...

......但是我不能忽视根本原因,除非我打赌这是一个类加载器的事情.请注意,这fork in run := true也会使问题消失.