Rhino 1.7r2-3 E4X XML не определен

Я не смог запустить следующий код с помощью 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();
    }

person shift66    schedule 18.11.2011    source источник
comment
Можете ли вы убедиться, что используете правильный файл js.jar для Mozilla Rhino. Я пробовал ваш пример как на Windows, так и на Ubuntu Linux 11.04, используя Eclipse и Rhino 1.7R2 и 1.7R3, и все выполнялось без ошибок.   -  person obscuredlogic    schedule 18.11.2011


Ответы (1)


У меня была такая же проблема → в 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 (когда я запускаю Shell с js.jar только в пути к классам).

person yumaa    schedule 24.12.2011
comment
Я знаю )) Я решил эту проблему. Но все равно спасибо за ответ )) - person shift66; 24.12.2011