小编典典

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

java

我试图确保我的Rhino脚本(在Java
6下运行)很严格,以便如果脚本开发人员拼错了一个表达式,我希望抛出一个异常。当前发生的情况是该表达式仅计算为“未定义”。

根据Mozilla org
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


阅读 284

收藏
2020-11-26

共1个答案

小编典典

如果您Context.enter()在致电之前正在做,请initGlobal()尝试调换顺序。

2020-11-26