【发布时间】:2017-06-14 21:26:47
【问题描述】:
我正在尝试在 Java 应用程序中使用 Javascript 库 multilang-extract-comments,因此我决定使用 Rhino 作为 Javascript 引擎并使用 Rhinodo 来连接 Rhino 和 NodeJS。但是,我无法弄清楚如何实际使用 Rhinodo。我查看了使用 Rhinodo 的项目的代码(早午餐、jshint 和凹槽的 maven 插件),但我发现代码非常晦涩难懂。我尝试实现如下代码(对我的应用程序进行了一些编辑):
rhinodoBuilder
.destDir(rhinodoDestDir)
.moduleFactory(nodeModuleProvider)
.consoleFactory(wrappingConsoleFactory)
.env(env)
.build(new BaseFunction() {
@Override
public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
Scriptable brunch = (Scriptable) ScriptableObject.callMethod(cx, scope, "require",
new Object[]{Context.javaToJS("brunch", scope)});
Scriptable options = cx.newObject(scope);
ScriptableObject.putProperty(options, "minify", minify);
System.setProperty("user.dir", userDir.getAbsolutePath());
ScriptRuntime.doTopCall(ScriptableObject.getTypedProperty(brunch, "build", Function.class),
cx, scope, thisObj, new Object[]{
options,
new BaseFunction() {
@Override
public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
return Undefined.instance;
}
}
});
return Undefined.instance;
}
});
(来自 brunch maven 插件)
但是,此代码对我不起作用。我在尝试查找我的 Javascript 库时遇到错误,或者当我使用它应该能够找到的库时(我以 fs 为例),我得到了 NullPointerException。有人可以告诉我我在这里缺少什么吗?
注意:Rhinodo 和使用它的 maven 插件都可以在MuleSoft's GitHub Repositories找到
【问题讨论】:
标签: javascript java node.js rhino