我正在尝试使用GroovyShell
来评估Grails应用程序中的一些代码片段,但我似乎无法访问我们的Grails域类。例如,当我尝试评估这样的事情时:
Eval.me("my.package.MyDomainClass.get(1)")
我看到这样的错误:
groovy.lang.MissingPropertyException: No such property: my for class: Script1
关于如何让它发挥作用的任何想法?
感谢。
答案 0 :(得分:6)
我想出了如何让它发挥作用。默认情况下,GroovyShell
实例会在其自己的类加载器中清楚地评估脚本,因此您的Grails工件都不可用。有一个替代构造函数,你可以传入另一个类加载器,所以这在Grails应用程序的上下文中做了我需要的(例如在grails console
内运行时):
def shell = new GroovyShell(this.class.classLoader)
shell.evaluate("my.package.MyDomainClass.get(1)")