簡體   English   中英

groovy MissingMethodException-通過ConfigSlurper進行解析

[英]groovy MissingMethodException - parsing through ConfigSlurper

我正在嘗試使用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
      }
    }
}

it.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") 

嘗試

println it.'1'

要么

println it.getAt("1") // as the exception shows you

考慮一下您正在使用哪種類型。 configConfigObject ,您可以將其視為地圖。 它的子對象domaindomain.managedserver也是ConfigObjects。 當您在domain.managedserver上調用each domain.managedserver並將其傳遞給不帶任何參數的閉包時,它將為您提供一組條目。 因此,您不能調用它it.get("1")因為Entry沒有名為“ 1”的屬性。 它具有keyvalue 因此,您可以println "$it.key: $it.value"

  domain.managedserver.each { key, value ->
    println value.getClass()
    println "$key: $value"
  }

或者如果您想直接獲取鍵“ 1”的值:

  println domain.managedserver.'1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM