Java-сценарии NoSuchMethodException?
Я работаю над созданием сценариев (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, так что я сделал не так?
1 ответ
Решение
Код с комментариями, кажется, является источником проблемы, так как он комментирует даже имя метода myMethod
//importPackage(javax.swing);
удалите эту строку и перезапустите ваш код
Если вы хотите сохранить свой комментарий, тогда вместо однострочного комментария (//) используйте многострочный комментарий (/**/)