CommonJSをJava7とRhino1.7R3で動作させるためのサポートが必要です。
Rhino 1.7R3は、CommonJSモジュールをサポートしています。
また、Java7にはRhino1.7R3がバンドルされています。org.mozilla.javascript.commonjs
残念ながら、Java 7のRhinoは変更されたバージョンであり、次のパッケージは含まれていません。
javax.script
次のように、APIを介してRhino1.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)
CommonJSサポートを利用できるようにJava7をRhino1.7R3のフルバージョンで動作させるにはどうすればよいですか?
編集:私はまったく同じトピックを扱っている次の質問を見つけました:
健全性チェック:Rhinoにはrequire関数がありませんよね?
回答者は、限定されたRhino1.7R3をCommonJSRhino 1.7R3に置き換えることは可能かもしれないと示唆していますが、それをどのように行うかについては述べていません。それが私がここで求めていることです。