我正在努力让(JavaScript)脚本在 Java 中工作。
我有一个 JavaScript 程序,在我的 Java 程序中定义(以及所有必要的脚本引擎相关事物的实例),如下所示:
static ScriptEngineManager engineManager = new ScriptEngineManager();
static ScriptEngine jsengine = engineManager.getEngineByName("js");
static Invocable jsinvoke = (Invocable) jsengine;
static String program =
"//importPackage(javax.swing);" +
"function myMethod(x, y) {" +
"return x+y;" +
"}";
在程序开始时,我确实称之为,它毫无怨言地工作:
try {
jsengine.eval(program);
} catch(ScriptException e) {e.printStackTrace();}
然后,我myMethod
用这个打电话:
try {
jsinvoke.invokeFunction("myMethod", x, y);
} catch(ScriptException se) {
se.printStackTrace();
}
catch(NoSuchMethodException nsme) {
nsme.printStackTrace();
}
它给出了错误java.lang.NoSuchMethodException: no such method: myMethod
。它显然存在于 JavaScript 中,所以我做错了什么?