java - Rhino 报告丢失 : after property id

标签 java javascript macos mozilla rhino

我在 Mac OSX 上使用带有 envjs 1.2 的 Rhino 1.7 R4 和 JDK 1.6.0_33

如果我运行:

java -jar rhino-1.7R4.jar -opt -1

然后:

load('env.rhino-1.2.js')

然后脚本加载成功。

当我通过 RhinoTest.java 从 Java 加载相同的 JS 脚本时:

import org.apache.commons.io.IOUtils;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextAction;
import org.mozilla.javascript.Script;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.tools.shell.Main;
import org.mozilla.javascript.tools.shell.ShellContextFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class RhinoTest {
    static final Logger LOGGER = LoggerFactory.getLogger(RhinoTest.class);
    static private Scriptable SCRIPTABLE;
    static private List<Script> scripts;

    public static void main(String[] args) {
        ShellContextFactory cxFactory = Main.shellContextFactory;

        cxFactory.call(new ContextAction() {
            @Override
            public Object run(Context cx) {
                final Initiator initiator = new Initiator(cx).init();

                LOGGER.trace("Run script");
                try {
                    return initiator.execute();
                } finally {
                }
            }

            class Initiator {
                Initiator(Context context) {
                    this.cx = context;
                }

                Initiator init() {
                    if (SCRIPTABLE == null)
                        createScriptable();
                    initContext();
                    return this;
                }

                Object execute() {
                    return null;
                }

                void createScriptable() {

                    LOGGER.trace("init standard objects");
                    SCRIPTABLE = cx.initStandardObjects();

                    LOGGER.trace("set optimization level to -1");
                    cx.setOptimizationLevel(-1);// bypass the 64k limit // interpretive mode
                    attachJs("env.rhino-1.2.js");


                    LOGGER.trace("set optimization level to 9");
                    cx.setOptimizationLevel(9);

                }

                @SuppressWarnings("deprecation")
                private void attachJs(String jsFileName) {
                    InputStream in = null;
                    InputStreamReader reader = null;
                    if (LOGGER.isDebugEnabled()) LOGGER.debug("loading " + jsFileName);
                    try {
                        in = RhinoTest.class.getResourceAsStream(jsFileName);
                        if (in == null)
                            throw new RuntimeException("cannot find js file : " + jsFileName);

                        reader = new InputStreamReader(in);
                        if (scripts == null)
                            scripts = new ArrayList<Script>();
                        scripts.add(cx.compileReader(SCRIPTABLE, reader, jsFileName, 1, null));

                        if (LOGGER.isDebugEnabled()) LOGGER.debug("loaded " + jsFileName);
                    } catch (IOException e) {
                        throw new RuntimeException("cannot load js file : " + jsFileName, e);
                    } finally {
                        IOUtils.closeQuietly(in);
                        IOUtils.closeQuietly(reader);
                    }
                }

                void initContext() {
                    LOGGER.trace("set optimization level to -1");
                    cx.setOptimizationLevel(-1);// bypass the 64k limit // interpretive mode

                    for (Script s : scripts) {
                        s.exec(cx, SCRIPTABLE);
                    }

                }

                private final Context cx;
            }
        });


    }
}

我得到:

Exception in thread "main" org.mozilla.javascript.EvaluatorException: missing : after property id (env.rhino-1.2.js#2121)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(Unknown Source)
at org.mozilla.javascript.DefaultErrorReporter.error(Unknown Source)
at org.mozilla.javascript.Parser.addError(Unknown Source)
at org.mozilla.javascript.Parser.reportError(Unknown Source)
at org.mozilla.javascript.Parser.mustMatchToken(Unknown Source)
at org.mozilla.javascript.Parser.primaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.memberExpr(Unknown Source)
at org.mozilla.javascript.Parser.unaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.mulExpr(Unknown Source)
at org.mozilla.javascript.Parser.addExpr(Unknown Source)
at org.mozilla.javascript.Parser.shiftExpr(Unknown Source)
at org.mozilla.javascript.Parser.relExpr(Unknown Source)
at org.mozilla.javascript.Parser.eqExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitAndExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitXorExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitOrExpr(Unknown Source)
at org.mozilla.javascript.Parser.andExpr(Unknown Source)
at org.mozilla.javascript.Parser.orExpr(Unknown Source)
at org.mozilla.javascript.Parser.condExpr(Unknown Source)
at org.mozilla.javascript.Parser.assignExpr(Unknown Source)
at org.mozilla.javascript.Parser.argumentList(Unknown Source)
at org.mozilla.javascript.Parser.memberExprTail(Unknown Source)
at org.mozilla.javascript.Parser.memberExpr(Unknown Source)
at org.mozilla.javascript.Parser.unaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.mulExpr(Unknown Source)
at org.mozilla.javascript.Parser.addExpr(Unknown Source)
at org.mozilla.javascript.Parser.shiftExpr(Unknown Source)
at org.mozilla.javascript.Parser.relExpr(Unknown Source)
at org.mozilla.javascript.Parser.eqExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitAndExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitXorExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitOrExpr(Unknown Source)
at org.mozilla.javascript.Parser.andExpr(Unknown Source)
at org.mozilla.javascript.Parser.orExpr(Unknown Source)
at org.mozilla.javascript.Parser.condExpr(Unknown Source)
at org.mozilla.javascript.Parser.assignExpr(Unknown Source)
at org.mozilla.javascript.Parser.expr(Unknown Source)
at org.mozilla.javascript.Parser.statementHelper(Unknown Source)
at org.mozilla.javascript.Parser.statement(Unknown Source)
at org.mozilla.javascript.Parser.parseFunctionBody(Unknown Source)
at org.mozilla.javascript.Parser.function(Unknown Source)
at org.mozilla.javascript.Parser.primaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.memberExpr(Unknown Source)
at org.mozilla.javascript.Parser.unaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.mulExpr(Unknown Source)
at org.mozilla.javascript.Parser.addExpr(Unknown Source)
at org.mozilla.javascript.Parser.shiftExpr(Unknown Source)
at org.mozilla.javascript.Parser.relExpr(Unknown Source)
at org.mozilla.javascript.Parser.eqExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitAndExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitXorExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitOrExpr(Unknown Source)
at org.mozilla.javascript.Parser.andExpr(Unknown Source)
at org.mozilla.javascript.Parser.orExpr(Unknown Source)
at org.mozilla.javascript.Parser.condExpr(Unknown Source)
at org.mozilla.javascript.Parser.assignExpr(Unknown Source)
at org.mozilla.javascript.Parser.expr(Unknown Source)
at org.mozilla.javascript.Parser.primaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.memberExpr(Unknown Source)
at org.mozilla.javascript.Parser.unaryExpr(Unknown Source)
at org.mozilla.javascript.Parser.mulExpr(Unknown Source)
at org.mozilla.javascript.Parser.addExpr(Unknown Source)
at org.mozilla.javascript.Parser.shiftExpr(Unknown Source)
at org.mozilla.javascript.Parser.relExpr(Unknown Source)
at org.mozilla.javascript.Parser.eqExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitAndExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitXorExpr(Unknown Source)
at org.mozilla.javascript.Parser.bitOrExpr(Unknown Source)
at org.mozilla.javascript.Parser.andExpr(Unknown Source)
at org.mozilla.javascript.Parser.orExpr(Unknown Source)
at org.mozilla.javascript.Parser.condExpr(Unknown Source)
at org.mozilla.javascript.Parser.assignExpr(Unknown Source)
at org.mozilla.javascript.Parser.expr(Unknown Source)
at org.mozilla.javascript.Parser.statementHelper(Unknown Source)
at org.mozilla.javascript.Parser.statement(Unknown Source)
at org.mozilla.javascript.Parser.parse(Unknown Source)
at org.mozilla.javascript.Parser.parse(Unknown Source)
at org.mozilla.javascript.Context.compileImpl(Unknown Source)
at org.mozilla.javascript.Context.compileReader(Unknown Source)
at org.mozilla.javascript.Context.compileReader(Unknown Source)
at RhinoTest$1$Initiator.attachJs(RhinoTest.java:85)
at RhinoTest$1$Initiator.createScriptable(RhinoTest.java:63)
at RhinoTest$1$Initiator.init(RhinoTest.java:44)
at RhinoTest$1.run(RhinoTest.java:28)
at org.mozilla.javascript.Context.call(Unknown Source)
at org.mozilla.javascript.ContextFactory.call(Unknown Source)
at RhinoTest.main(RhinoTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

请帮忙

最佳答案

弗拉基米尔,

你是对的,这是一个版本问题。

事实证明,我导入的蜡染库包含另一个版本的 rhino。

通过从我的项目中针对每个 batik 依赖项排除 batik-js,这个问题就消失了。

关于java - Rhino 报告丢失 : after property id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170305/

相关文章:

java - 如何在 cucumber 中重新运行失败的方案

javascript - 您可以使用 ons-postpush 查找通过 javascript 推送的元素吗?

objective-c - 可以重复使用已清除的 IOSurface 吗?

java - TestContainers 找不到有效的 Docker 环境

java - 如何以最低价格优化购物车?

如果系统属性值包含空格,java getInputArguments() 返回尴尬的结果

javascript - jwplayer 外部播放暂停按钮

javascript - 正文解析器 request.body 为空

macos - 如何使用 FSWatch 在 Mac OSX 上观看文件更改?

java - 如何使用点 (.) 根据宽度和高度打印一条线