从插件加载应用程序类

时间:2009-05-22 15:06:54

标签: grails groovy grails-plugin

在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的实例)。但是上面显示的代码不在插件描述符中。

有没有办法可以从插件中的主应用程序加载一个类(但在插件描述符之外)?

谢谢, 唐

1 个答案:

答案 0 :(得分:0)

事实证明,有两种可能的答案。

正确答案

GrailsApplication在单元测试中不可用,因此要使上面的代码工作,它应该是集成测试

可行的黑客

更改

parse(ApplicationHolder.application.classLoader.loadClass(configName))

parse(MyClass.classLoader.loadClass(configName))
相关问题