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);

удалите эту строку и перезапустите ваш код

Если вы хотите сохранить свой комментарий, тогда вместо однострочного комментария (//) используйте многострочный комментарий (/**/)

Другие вопросы по тегам