1

Java コードで Java スクリプトを実行するために使用される Rhino スクリプトの実行では、複数の JavaScript を識別できません。

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine jsEngine = factory.getEngineByName("javascript");    
Reader reader = new FileReader(new File(this.getClass().getClassLoader().getResource("file1.js").toURI()));
    jsEngine.eval(reader);

file1.js が内部的に jquery-1.3.2.min.js を使用して実行する場合、同じために import ステートメントを使用する方法。

Rhino に次の Maven 依存関係を使用しています。

  <!-- Mozilla Rhino JavaScript engine -->
        <dependency>
            <groupId>rhino</groupId>
            <artifactId>js</artifactId>
            <version>1.7R2</version>
        </dependency>

なぜそのような振る舞いをしているのかわかりません。

4

1 に答える 1

1

解決策を見つけました:

 ScriptEngineManager factory = new ScriptEngineManager();
          ScriptEngine jsEngine = factory.getEngineByName("javascript");
          jsEngine.put("out", System.out);
          Reader reader1 = null;
          Reader reader2 = null;
          Reader reader3 = null;
        try {
            reader1 = new FileReader(new File(this.getClass().getClassLoader().getResource("file1.js").toURI()));
            reader2 = new FileReader(new File(this.getClass().getClassLoader().getResource("file2.js").toURI()));
            reader3 = new FileReader(new File(this.getClass().getClassLoader().getResource("file3.js").toURI()));

            ScriptableObject scope = context.initStandardObjects();
            context.evaluateReader(scope, reader1, "reader1", 1, null);
            context.evaluateReader(scope, reader2, "reader2", 1, null);
            context.evaluateReader(scope, reader3, "reader3", 1, null);

            Function fct = (Function)scope.get("METHOD_NAME", scope);
            Object params[] = {"",""}
            result = fct.call(context, scope, scope, params);

        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
于 2013-08-05T08:38:40.383 に答える