GroovyShell :встроенное выполнение

Я пытаюсь внедрить groovy в большое приложение Java.

Приложение Java должно загружать некоторые служебные сценарии Groovy при запуске.

Затем приложение должно запускать другие сценарии несколько раз. Также необходимо ввести некоторый код в графическом интерфейсе и выполнить его по запросу пользователя.

Проблема, с которой я столкнулся, заключается в следующем:

Я загружаю сценарий запуска следующим образом:

GroovyShell gShell = new GroovyShell();
gShell.evaluate(new FileReader("scripts/autoload.groovy"));

Предположим, мой autoload.groovy содержит:

def prnt(m) {
    println("From Groovy: " + m);
}

Это прекрасно работает. Но когда я хочу запустить пользовательскую команду, используя:

gShell.evaluate("prnt 66");

Я получаю сообщение об ошибке: groovy.lang.MissingMethodException: No signature of method: Script2.prnt() is applicable for argument types: (java.lang.Integer) values: [66]

Как мой пользовательский скрипт может получить доступ к уже загруженным методам?

Примечание. :Я также попробовал "autoload.prnt 88" и все равно получаю ошибку.

5
задан Chris Stratton 24 July 2012 в 04:57
поделиться