我需要帮助让 CommonJS 在 Java 7 和 Rhino 1.7R3 上运行。
Rhino 1.7R3 支持 CommonJS 模块:
- https://developer.mozilla.org/En/New_in_Rhino_1.7R3
Java 7 与 Rhino 1.7R3 捆绑在一起。不幸的是,Java 7的Rhino是一个修改版本,它不包括org.mozilla.javascript.commonjs
包裹:
- http://jdk7.java.net/rhino/README.TXT
我想通过以下方式使用 Rhino 1.7R3 对 CommonJS 的支持javax.script
接口如下:
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()
I get
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 支持?
EDIT:我发现以下问题涉及完全相同的主题:
健全性检查:Rhino 没有 require 函数,对吧?
受访者建议也许可以用 CommonJS Rhino 1.7R3 替换有限的 Rhino 1.7R3,但没有说明如何做到这一点。这就是我在这里要问的。