У меня есть скомпилированный проект Grails, и из отдельного проекта groovy я рефлективно загружаю класс предметной области следующим образом.
Class clazz = Class.forName('mypack.myclass', true, Thread.currentThread().contextClassLoader)
def newDomainObject = clazz.newInstance()
При запуске из-за пределов Grails (в моем отдельном проекте groovy) объект не распознается как GroovyObject.
println newDomainObject instanceof GroovyObject // false
Поскольку я работаю вне Grails, я думаю, что groovy будет обрабатывать доменный класс так же, как и любой другой класс (и, глядя на файл класса, он действительно реализует GroovyObject).
Я думаю, что это как-то связано с тем, как Grails компилирует объект предметной области, но я не уверен, что здесь происходит.
Обратите внимание, что это связано с Почему Class.forName не работает на доменные классы Grails, но разные.