Я працюю над проектом Java, який завантажується вGroovy скрипти. Все працює як очікується, за винятком groovy скриптів, які посилаються на інші groovy скрипти, в даному випадку, клас корисності. Кожного разу, коли виконується сценарій, що включає вказаний клас корисності, завантажувач плагінів видає виняток "groovy.lang.MissingPropertyException: Немає такої властивості: Util.
Перш ніж я підозрюю, що щось не так зКод Java, я хотів спочатку зрозуміти, як Groovy "знаходить" інші класи. Якщо я запускаю цей проект у eclipse, і весь каталог проекту, який включає всі ці родовисті скрипти, знаходиться в шляху до класу, чи всі грейкові сценарії зможуть "знайти" один одного?
Або будь-які інші думки?
Відповіді:
1 для відповіді № 1Groovy має відмінність між скриптами ізаняття Якщо файл Groovy містить деяке визначення поза межами класу, то він вважається скриптом, і він складається в клас, розташований в пакеті за замовчуванням (незалежно від того, що встановлено package
декларація)
Я не знаю, як ви називаєте Groovy скрипти, але якщо ви використовуєте GroovyShell
клас за це, потім GroovyShell
має конструктор з параметром ClassLoader
тип, і ви можете передати ваш поточний завантажувач класу на той або ваш користувальницький завантажувач класів, який містить інші скомпільовані скрипти Groovy. Або якщо ви використовуєте GroovyScriptEngine
ви можете передати referenece до каталогу, у якому є ваші скрипти, і движок буде компілювати їх для вас і зробити їх доступними для інших сценаріїв у цьому каталозі.
Більше інформації про вставку Groovy в Java можна знайти тут: http://groovy.codehaus.org/Embedding+Groovy.
Але в цілому мені потрібно більше дізнатися про вашуналаштовувати (структуру папок, інструмент зібрання, ви збираєте groovy код під час процесу збирання, як ви запускаєте groovy код з java, як ви називаєте groovy скрипт з groovy, як ви організовуєте classpath тощо), щоб дати вам більш точний поради