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

标签 java javascript rhino javax.script

我正在尝试确保我的 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/

相关文章:

java - 更新时发生 TransactionRequiredException

java - 如何在 grails 2.0.3 中对服务进行单元测试?

javascript - 电源列表的最后一位

javascript - 从单独的网络访问 Node.js 服务器

javascript - 为什么 mysql-event 在 node.js 中不起作用?

c# - 帮我避免这个 NullReferenceException(使用 Rhino Mocks)

java - 在 Android 上的 Kotlin 中通过路径设置 imageView

java - 如何从 java 读取 ffmpeg 响应并使用它来创建进度条?

javascript - 在 Ant 中对后续 Javascript 使用相同的作用域

javascript - 使用 Nashorn JavaScript Engine (Java 8) 访问 ScriptContext 变量