MissingMethodException错误期望Map收到LinkedHashMap

时间:2014-12-08 17:55:59

标签: grails groovy

我有以下两个类

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)

我到处搜索过,似乎无法找到导致此错误的可能原因,所以我希望之前有人见过这个问题,可以帮助我找到错误。

提前致谢。

2 个答案:

答案 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)

  • “没有方法签名:Utils.mapToXML()”表示您尝试在Utils实例上调用mapToXML。
  • “适用于参数类型:(java.util.LinkedHashMap,java.lang.String)”表示您尝试使用LinkedHashMap和String进行调用。
  • “可能的解决方案:mapToXml(java.util.Map,java.lang.String),mapToXml(java.util.Map)”表示有一个适合我们给定对象的mapToXml方法。

那有什么不对?简单来说,mapToXml是可用的,mapToXML就是你用来调用的东西。使用较少的上限,你没事。

答案 1 :(得分:-2)

这段代码在groovy中编译并运行良好,没有任何问题。

我认为这是一个损坏的本地缓存的问题。

尝试运行

grails clean 

和/或手动删除

yourgrailsapp/target 

文件夹并使用

重新编译源代码
grails compile