我需要帮助 CommonJS 在 Java 7 和 Rhino 1.7R3 上工作。
Rhino 1.7R3 支持 CommonJS 模块:
Java 7 与 Rhino 1.7R3 捆绑在一起。不幸的是,Java 7 的 Rhino 是一个修改版本,它不包含该org.mozilla.javascript.commonjs
包:
我想通过javax.script
API 使用 Rhino 1.7R3 对 CommonJS 的支持,如下所示:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
engine.put("markdown", markdown);
engine.eval("var html = require('./Markdown.Sanitizer').getSanitizingConverter().makeHtml(markdown);");
return (String) engine.get("html");
(我通过验证ScriptEngineManager
我确实在使用 Rhino 1.7R3 引擎。)我想也许我可以将以下依赖项添加到类路径中
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7R3</version>
</dependency>
和 CommonJS——特别是require()
——将开始工作。但事实并非如此。当我尝试使用时,require()
我得到
Caused by: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "require" is not defined. (<Unknown source>#2)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3773)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3751)
at sun.org.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3836)
如何让 Java 7 与完整版的 Rhino 1.7R3 一起工作,以便获得 CommonJS 支持?
编辑:我发现了以下问题,它涉及完全相同的主题:
受访者建议也许可以用 CommonJS Rhino 1.7R3 替换有限的 Rhino 1.7R3,但没有说明如何做到这一点。这就是我在这里要问的。