我正在开发一个Grails(v.2.2.1)应用程序,它可以加载几个Grails插件。我想通过Bootstrap.groovy中的一些代码在启动时检查这些插件。
对于每个插件,我想检查服务并检测已实现的接口,以便我知道每个服务可用的功能。 我开始使用以下代码,仅检查名称与特定模式匹配的插件。:
def pluginManager = PluginManagerHolder.getPluginManager();
pluginManager.getAllPlugins().each {
if(it.name.startsWith("cn") && it.name.endsWith("Connector")) {
…
String serviceName = ….
…
Object service = ctx.getBean(serviceName);
println “Service:” + service /
Class[] ints1 = GrailsClassUtils.getAllInterfaces(service);
Class[] ints2 = GrailsClassUtils.getAllInterfacesForClass(service.getClass());
…
}
}
println返回服务对象,它似乎以我期望的形式存在。 然后我尝试了两行/替代代码,然后都失败了。
第一个返回:
没有方法签名:static org.codehaus.groovy.grails.commons.GrailsClassUtils.getAllInterfaces()适用于参数类型:( ...)...
第二个回归:
没有方法签名:static org.codehaus.groovy.grails.commons.GrailsClassUtils.getAllInterfacesForClass()适用于参数类型:(java.lang.Class)...
第二种选择有点令人费解,因为该方法的签名是 getAllInterfacesForClass(java.lang.Class clazz)
两个问题: