在Grails 1.1插件中,我正在尝试使用以下代码从主应用程序加载一个类:
class MyClass {
static Map getCustomConfig(String configName){
return new ConfigSlurper().
parse(ApplicationHolder.application.classLoader.loadClass(configName))
}
}
其中configName
是$MAIN_APP/grails-app/conf
中包含配置信息的类的名称。但是,当上面的代码在单元测试中运行时applicationHolder.application
返回null,导致上面的方法抛出NullPointerException
。 Grails JIRA issue是为此问题创建的,但它已标记为已修复,尽管问题似乎仍然存在。
我知道在插件描述符类中,我可以通过隐式GrailsApplication
变量访问主应用程序(application
的实例)。但是上面显示的代码不在插件描述符中。
有没有办法可以从插件中的主应用程序加载一个类(但在插件描述符之外)?
谢谢, 唐
答案 0 :(得分:0)
事实证明,有两种可能的答案。
正确答案
GrailsApplication在单元测试中不可用,因此要使上面的代码工作,它应该是集成测试
可行的黑客
更改
parse(ApplicationHolder.application.classLoader.loadClass(configName))
到
parse(MyClass.classLoader.loadClass(configName))