如何在Java中指定自己的Rhino上下文?

我正在努力确保我的Rhino脚本(在Java 6下运行)是严格的,这样如果脚本开发人员拼错了表达式,我希望抛出exception。 目前发生的事情是表达式简单地评估为“未定义”。

现在根据Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6,有一些function可以在上下文中启用严格检查。 我找不到一个有效的例子。

到目前为止我所做的是编写一个类来扩展ContextFactory然后覆盖hasFeature方法。

public class ScriptContextFactory extends ContextFactory { protected boolean hasFeature(Context context, int featureIndex) { switch (featureIndex) { case Context.FEATURE_STRICT_EVAL: return true; case Context.FEATURE_STRICT_VARS: return true; } return super.hasFeature(context, featureIndex); } } 

然后在Main我将我的设置为默认值。

 ContextFactory.initGlobal(new ScriptContextFactory()); 

我得到一个非法的州例外。 🙁

关于这是如何工作的任何想法或样本?

TIA

如果在调用initGlobal()之前正在执行Context.enter() ,请尝试initGlobal()订单。