我是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: []
我在课程开头定义了哈希。
我觉得我在这里遗漏了一些明显的东西,但我不知道错误信息想告诉我什么。我看过其他人有同样的错误,但他们都非常主观。感谢任何帮助,提前谢谢。
答案 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
}