0

在 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问题,但它已被标记为已修复,尽管问题似乎仍然存在。

我知道在插件描述符类中,我可以GrailsApplication通过隐式application变量访问主应用程序(的实例)。但是上面显示的代码不在插件描述符中。

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

谢谢,唐

4

1 回答 1

0

事实证明,有 2 个可能的答案。

正确答案

GrailsApplication 在单元测试中不可用,所以为了让上面的代码工作,它应该是一个集成测试

有效的黑客

改变

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

parse(MyClass.classLoader.loadClass(configName))
于 2009-05-26T17:31:16.933 回答