【发布时间】:2014-11-11 19:45:53
【问题描述】:
我必须使用 nashorn 从 Java 执行一些 bash shell 命令。
我有一个 javascript 文件:
#!/usr/bin/jjs
var testBashMethod = function(name){
$EXEC("echo Hello from bash ${name}");
};
testBashMethod("foobar");
我有java方法将上面的javascript方法加载到Nashorn引擎中并执行它:
public void executeScript(){
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
engine.eval(new FileReader("script.js"));
Invocable invocable = (Invocable)engine;
invocable.invokeFunction("testBashMethod");
}
在执行上述方法时,我收到以下错误:
jdk.nashorn.internal.runtime.ECMAException: ReferenceError: "$EXEC" is not defined
我的猜测是我需要在 java 中以脚本模式加载 nashorn 引擎。 在终端上,我可以使用脚本模式运行引擎,然后成功执行以下命令:
jjs -scripting
jjs> $EXEC('echo Hello World..!!')
我的问题:如何在 Java 脚本模式下加载 nashorn 引擎?以便 bash 脚本方法可用。还是我还缺少其他东西。
感谢您的帮助。
【问题讨论】:
标签: java javascript bash java-8 nashorn