尝试在java中运行javascript程序生成EvaluatorException:找不到“ReferenceError”的构造函数

时间:2014-06-12 05:20:37

标签: java rhino

我正在尝试在java程序中导入env.js

import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.tools.shell.Main;

public class ScriptRun {

    public static void main(String[] args) throws Exception {
        System.out.println(System.getProperty("java.version"));
        Context cx = ContextFactory.getGlobal().enterContext();
        Scriptable scope = cx.initStandardObjects();
        cx.setOptimizationLevel(-1);
        cx.setLanguageVersion(Context.VERSION_1_7);
        Main.processSource(cx, "C:\\Java\\rhino1_7R4\\rhino1_7R4\\env.rhino.1.0.js");\\ <== this generates exception
        Context.exit();
    }
}

这是生成

Exception in thread "main" org.mozilla.javascript.EvaluatorException: Constructor for "ReferenceError" not found. (C:\Java\rhino1_7R4\rhino1_7R4\env.rhino.1.0.js#75)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:77)
at org.mozilla.javascript.Context.reportRuntimeError(Context.java:913)
at org.mozilla.javascript.Context.reportRuntimeError(Context.java:969)
env.rhino.1.0.js中的第75行是

try { dontCare = globalize; }

它所在的代码块是

var countOfMissing = 0, dontCare;
try { dontCare = globalize; }
catch (ex){ globalize = function(){ return {}; };
            countOfMissing++; }

我认为这段javascript很好。失败的是尝试创建ReferenceError并在那里失败。我的假设是这应该是javascript引擎的一部分。

有没有人碰到过这个?

jdk是1.7.0_45

0 个答案:

没有答案