groovy MissingMethodException-通过ConfigSlurper进行解析
我正在尝试使用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
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'