1

JDK 1.6.0_33を搭載したMac OSXでenvjs 1.2を搭載したRhino 1.7 R4を使用しています

私が実行した場合:

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)

助けてください

4

1 に答える 1

1

ウラジミール、

あなたは正しかったです。それはバージョンの問題でした。

私がインポートしたバティック ライブラリには、別のバージョンの rhino が含まれていたことがわかりました。

Batik 依存関係ごとに私のプロジェクトから batik-js を除外することで、この問題はなくなりました。

于 2012-09-11T00:00:39.393 に答える