我有以下两个类
class Utils{
...
Map clearEmptyKeys(Map source){
...
}
String mapToXml(Map source, String root = "root"){
...
}
}
和
class Application {
Utils utils = new Utils()
...
String toXML(){
return utils.mapToXml(createMap(), 'Application')
}
Map createMap(){
Map response = [:]
...
response = utils.clearEmptyKeys(response)
...
return response
}
}
正如您在Application类中看到的,我调用了Utils.mapToXML方法。这用于最近工作精细的util。现在每当我调用这个方法时,我都会得到
groovy.lang.MissingMethodException:没有方法签名:Utils.mapToXML()适用于参数类型:(java.util.LinkedHashMap,java.lang.String)values:[[_id:54821bd9efef088e089cc507,Active:true, ......],...] 可能的解决方案:mapToXml(java.util.Map,java.lang.String),mapToXml(java.util.Map)
我到处搜索过,似乎无法找到导致此错误的可能原因,所以我希望之前有人见过这个问题,可以帮助我找到错误。
提前致谢。
答案 0 :(得分:4)
我认为您展示的代码和您尝试的代码并不相同。错误表明拼写错误,你的文字暗示同样的错误。我们将错误信息分开:
groovy.lang.MissingMethodException: No signature of method: Utils.mapToXML() is applicable for argument types: (java.util.LinkedHashMap, java.lang.String) values: [[_id:54821bd9efef088e089cc507, Active:true, ...], ...] Possible solutions: mapToXml(java.util.Map, java.lang.String), mapToXml(java.util.Map)
那有什么不对?简单来说,mapToXml是可用的,mapToXML就是你用来调用的东西。使用较少的上限,你没事。
答案 1 :(得分:-2)
这段代码在groovy中编译并运行良好,没有任何问题。
我认为这是一个损坏的本地缓存的问题。
尝试运行
grails clean
和/或手动删除
yourgrailsapp/target
文件夹并使用
重新编译源代码grails compile