Получить доступ к классу домена Grails из скрипта GroovyShell - PullRequest
3 голосов
/ 17 января 2011

Я пытаюсь использовать GroovyShell для оценки некоторых фрагментов кода из приложения Grails, но я не могу получить доступ к нашим классам домена Grails. Например, когда я пытаюсь оценить что-то вроде этого:

Eval.me("my.package.MyDomainClass.get(1)")

Я вижу такую ​​ошибку:

groovy.lang.MissingPropertyException: No such property: my for class: Script1

Есть мысли о том, как я могу заставить это работать?

Спасибо.

1 Ответ

6 голосов
/ 17 января 2011

Я понял, как заставить это работать.По умолчанию экземпляр GroovyShell явно оценивает скрипт в своем собственном загрузчике классов, поэтому ни один из ваших артефактов Grails недоступен.Есть альтернативный конструктор, в котором вы можете передать другой загрузчик классов, поэтому он делает то, что мне нужно, в контексте приложения Grails (например, при запуске внутри grails console):

def shell = new GroovyShell(this.class.classLoader)
shell.evaluate("my.package.MyDomainClass.get(1)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...