2013-11-23 33 views
3

当我运行在sbt 0.13中使用getEngineByName("JavaScript")的测试时,该方法返回null。 安全代码在sbt 0.12.x下正常工作。Sbt 0.13 ScriptEngine为getEngineByName(“JavaScript”)为空

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

我试图在sbt中手动设置javaHome

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

任何想法有什么不对?

回答

8

哈哈事实证明,我几个月前自己有这个问题,并忘记了一切!但后来我在我自己的源代码刚才发现这一点:

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

所以通过零到对于ScriptEngineManager构造是修复...

...但我不能在任何光线揭示根本的原因,除了我敢打赌这是一个类加载器的东西。请注意,fork in run := true也会使问题消失。

+0

令人难以置信!我突然开始在Domino中变得没有任何改变。将null传递给'ScriptEngineManager'解决了这个问题!谢谢。 –

相关问题