Grails 框架:groovy.lang.MissingMethodException:没有方法签名

Grails framework: groovy.lang.MissingMethodException: No signature of method

当我尝试将值赋给变量 "newDBName" 时,出现错误:

ERROR [grails.app.controllers] groovy.lang.MissingMethodException: 
No signature of method: DataSourceConfigService.$() is applicable for 
argument types: DataSourceConfigService$_injectNewDatasource_closure1_closure3) 
values: [DataSourceConfigService$_injectNewDatasource_closure1_closure3@1e1ae104]

代码:

class DataSourceConfigService {

def injectNewDatasource() {
            String newDBName = ""
            Environment.list().each {env ->
                if( !grailsApplication.mainContext.containsBean( "${env.accountName}" ) ) {

                            def bb = new BeanBuilder()
                            bb.beans {
                                  "${env.accountName}"(ComboPooledDataSource) {bean -> ...}
                                  bb.registerBeans( grailsApplication.mainContext );
                            }
                            log.info "Added bean called ${env.accountName}"

                            newDBName = ${env.accountName}
                }
            }
            return newDBName
}

}

我是这样调用函数的:

String newDBName = dataSourceConfigService.injectNewDatasource()

您在 newDBName 分配行中缺少引号。要么使用

newDBName = "${env.accountName}"

或者只是跳过到 GString 的转换(至少根据这个片段看起来没有必要)并使用

newDBName = env.accountName