groovy MissingMethodException-通过ConfigSlurper进行解析

groovy MissingMethodException-通过ConfigSlurper进行解析,groovy,Groovy,我正在尝试使用configslurper解析一些属性文件 ENT.adminserver.nodenumber=1 ENT.managedserver.1.host=vserver04 ENT.managedserver.2.host=vserver05 ENT.managedserver.3.host=vserver08 ENT.managedserver.4.host=vserver07 所说的属性文件。我正在尝试从属性中读取主机名 Properties properties = new

我正在尝试使用configslurper解析一些属性文件

ENT.adminserver.nodenumber=1
ENT.managedserver.1.host=vserver04
ENT.managedserver.2.host=vserver05
ENT.managedserver.3.host=vserver08
ENT.managedserver.4.host=vserver07
所说的属性文件。我正在尝试从属性中读取主机名

Properties properties = new Properties()
File propertiesFile = new File('DomainBuild.properties')
propertiesFile.withInputStream {properties.load(it)}
def config = new ConfigSlurper().parse(properties)

    def domainname="ENT" //will be passed through paremeters
    def domain = config.get(domainname)
    def managedServerFlow= {
      println domain.managedserver
      println domain.managedserver.keySet()
      domain.managedserver.each { 
        println it.getClass()
        println it.get("1") 
      }

      for (server in domain.managedserver) {
        println server.getClass()
        println server
      }
    }
}
get(“1”)导致以下错误

No signature of method: java.util.LinkedHashMap$Entry.get() is applicable for argument types: (java.lang.String) values: [1]
Possible solutions: getAt(java.lang.String), grep(), grep(java.lang.Object), wait(), getKey(), any()
我浏览了java和groovy文档,花了几个小时没有解析。请帮忙

而不是

println it.get("1") 
试一试


想想你在和什么类型的人一起工作
config
是一个
ConfigObject
,您可以将其视为一个映射。它的子对象
domain
domain.managedserver
也是配置对象。在
domain.managedserver
上调用
每个
并向其传递一个不带参数的闭包时,它将为您提供一组条目。因此,您不能调用
it.get(“1”)
,因为
条目没有名为“1”的属性。它有
。因此,您可以
println“$it.key:$it.value”

  domain.managedserver.each { key, value ->
    println value.getClass()
    println "$key: $value"
  }
或者,如果要直接获取键“1”的值:

  println domain.managedserver.'1'

谢谢你提供的细节。最初我尝试了标准的java for循环,
foreach(域中的服务器.managedserver)
,但陷入了.get.put的思维模式。关键和价值是有意义的。
  domain.managedserver.each { key, value ->
    println value.getClass()
    println "$key: $value"
  }
  println domain.managedserver.'1'