我正在尝试确保我的 Rhino 脚本(在 Java 6 下运行)是严格的,这样如果脚本开发人员拼错了表达式,我希望抛出异常。目前发生的是表达式简单地计算为“未定义”。
现在根据 Mozilla 组织 https://developer.mozilla.org/en/New_in_Rhino_1.6R6有一些功能可以在上下文中进行严格检查。我找不到这方面的工作示例。
到目前为止,我所做的是编写一个类来扩展 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()
,请尝试颠倒顺序。
关于java - 我如何在 Java 中指定我自己的 Rhino 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740031/