Встроенный groovy в Java, groovy.lang.MissingPropertyException: Нет такого свойства: - PullRequest
1 голос
/ 06 февраля 2012

Я работаю над проектом Java, который загружается в скриптах Groovy.Все работает, как и ожидалось, за исключением скриптов groovy, которые ссылаются на другие скрипты groovy, в нашем случае это служебный класс.Всякий раз, когда выполняется скрипт, который включает в себя упомянутый служебный класс, загрузчик плагинов генерирует исключение "groovy.lang.MissingPropertyException: такого свойства нет: Util.

Прежде чем я подозреваю, что что-то не так с кодом Java, я хотелсначала понять, как Groovy «находит» другие классы. Если я запускаю этот проект в eclipse, и весь каталог проекта, который включает в себя все эти скрипты groovy, находится в пути к классам, должны ли все скрипты groovy «находить» друг друга?

Или другие мысли?

1 Ответ

1 голос
/ 10 сентября 2012

В Groovy есть различие между скриптами и классами.Если файл Groovy содержит некоторый код вне определения класса, он считается сценарием и компилируется в класс, расположенный в пакете по умолчанию (независимо от того, что установлено в объявлении package).

Я не знаю, как вы вызываете скрипты Groovy, но если для этого вы используете класс GroovyShell, то у GroovyShell есть конструктор с параметром типа ClassLoader ивы можете передать ваш текущий загрузчик классов этому или вашему пользовательскому загрузчику классов, который содержит ваши другие скомпилированные скрипты Groovy.Или, если вы используете GroovyScriptEngine, вы можете передать ссылку в каталог, где находятся ваши скрипты, и движок скомпилирует их для вас и сделает их доступными для других скриптов в этом каталоге.

Подробнееинформацию о встраивании Groovy в Java можно найти здесь: http://groovy.codehaus.org/Embedding+Groovy.

Но в целом мне нужно знать больше о вашей настройке (структура папок, инструмент сборки, вы компилируете Groovy-код во время процесса сборки, как вызапустить Groovy-код из Java, как вы называете Groovy-скрипт из Groovy, как вы организовываете свой путь к классам и т. д.), чтобы дать вам более точный совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...