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 回答