我已经使用以下脚本评估了NashornScriptEngine
:
var Namespace = {
test: function()
{
return "It works";
}
}
现在我想调用该函数test
.
使用方法时invokeFunction
nashorn 引擎抛出以下异常:
java.lang.NoSuchMethodException: No such function Namespace.test
怎么可能调用这个函数呢?
您正在尝试访问名为的全局函数window["Namespace.test"]
, not window.Namespace.Test
。你首先需要获得一个参考Namespace
,然后你可以打电话invocable.invokeMethod https://docs.oracle.com/javase/8/docs/api/javax/script/Invocable.html#invokeMethod-java.lang.Object-java.lang.String-java.lang.Object...-指定Namespace
作为其上下文(this
).
例如,调用JSON.parse()
,您可以使用以下内容:
Object json = engine.eval("JSON"); // Or "Namespace" in your case
Object data = invocable.invokeMethod(json, "parse", contactJson); //"test" for the case you mention
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)