我能够从java调用或评估javascript表达式,如下所示:
jsEngine.eval("ComputerName == 'mymachine'", myScriptContext);
从myScriptContext对象中读取属性值ComputerName。
现在的问题是我希望有一些自定义函数可以作为评估表达式的一部分,如:
jsEngine.eval("startswith(ComputerName, 'my')", myScriptContext);
由于startswith不是一个可用的函数(我必须支持带有该签名的startwith),我试着写一个.js文件,在那里我定义了我的自定义函数&还附加了我的表达式,以便对该脚本进行评估并按如下方式执行:
jsEngine.eval("_js_having_myfunction_and_expression_"); // note - no myScriptContext
startswith
才被JS引擎识别。我提出myScriptContet的那一刻,我得到了这个例外:
主题“main”中的异常:
javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:TypeError:startswith不是函数