我无法使用JDK 6运行以下代码。
它引发异常:

线程“主”中的异常org.mozilla.javascript.EcmaError:ReferenceError:未定义“ XML”。

我的环境如下:Ubuntu 11.04,JDK 6,Rhino 1.7R2(也已通过Rhino 1.7R3测试)

    String script = "function abc(x) {var dd = new XML();}";
    Context context = Context.enter();
    try {
        ScriptableObject scope = context.initStandardObjects();
        Scriptable that = context.newObject(scope);

        Function fct = context.compileFunction(scope, script, "script", 1, null);
        Object result = fct.call(context, scope, that, new Object[] {2});

    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally {
        Context.exit();
    }

最佳答案

我遇到了同样的问题→在Rhino shell中E4X可以完美工作,但是在嵌入式模式下­ – ReferenceError:未定义“ XML”。

这是旧Xerces的问题,运行我的应用程序时,我的类路径中有2.6.2。当我将其更新为2.11时,问题消失了。

$ java -cp js.jar:xerces-2.6.2.jar org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 3 2011 05 09
js> var x = <foo/>;
js: uncaught JavaScript runtime exception: ReferenceError: "XML" is not defined.




$ java -cp js.jar org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 3 2011 05 09
js> var x = <foo/>;
js> x.toXMLString();
<foo/>


看起来当Rhino找到Xerces时,它使用它而不是使用自己的机制来解析XML(当我仅在classpath中使用js.jar启动Shell时)。

关于java - 未定义Rhino 1.7r2-3 E4X“XML”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8182992/

10-13 05:30