Groovy - 在main中调用方法时出现''没有方法签名'错误

时间:2016-06-06 09:31:59

标签: groovy

我是Groovy的新手,我正在尝试使用菌株名称和从JSON文件中获得的细菌的相应N50值来填充哈希映射。首先,我想用应变名称作为键填充哈希值。

我这样做的方法如下:

    def getStrains() {

            //create Slurper to get content from JSON file
            def slurper = new JsonSlurper()
            def inputFile = new File("-path to JSON file-")
            def inputJSON = slurper.parseText(inputFile.text)

            InputJSON.strains.each{

                //get strain names from JSON file
                def genus = it.genus
                def species = it.species
                def strain = it.strain
                def folderName = "${genus}_${species}_${strain}"

                //save folder name in hash
                n50Values[folderName]

            }
    }

现在我想在我的main方法中调用我的方法(只是为了查看应变名称是否正确),就像这样

    public static void main (String[] args){
        getStrains() 
    }

我收到以下错误:

Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: static scaffolds.ReadJSON.getStrains() is applicable for argument types: () values: []

我在课程开头定义了哈希。

我觉得我在这里遗漏了一些明显的东西,但我不知道错误信息想告诉我什么。我看过其他人有同样的错误,但他们都非常主观。感谢任何帮助,提前谢谢。

2 个答案:

答案 0 :(得分:1)

将getStrains()声明为静态,因为它是从静态上下文调用

答案 1 :(得分:1)

你拼错了你的名字:

        def inputJSON = slurper.parseText(inputFile.text)

        **i**nputJSON.strains.each{

顺便说一下,这个

n50Values[folderName]

没有任何意义。也许你想拥有它像

 n50Values << folderName

 n50Values[folderName] = folderName

更新:

看起来你想在这里使用一个集合而不是每个:

def n50Values = inputJSON.strains.collect{ 
  /*your code*/ 
  folderName 
}