我有一个像这样的简单Groovy脚本:
class Main {
static void main(String... args) {
args.each {
println ${it}
}
}
}
我无法弄清楚如何将命令行参数传递给它。我在Windows上运行脚本:
Groovy myscript.groovy“arg1”“arg2”
导致错误:
Caught:groovy.lang.MissingMethodException:没有方法签名:Main $ _main_closure1。$()适用于参数类型:( Main $ _main_closure1 $ _closure2)值:[Main $ _main_closure1 $ _closure2 @ 68b32e3e] 可能的解决方案:是(java.lang.Object),是(java.lang.Object),any(),any(),any(groovy.lang.Closure),use([Ljava.lang.Object;) groovy.lang.MissingMethodException:没有方法签名:Main $ _main_closure1。$()适用于参数类型:( Main $ _main_closure1 $ _closure2)值:[Main $ _main_closure1 $ _closure2 @ 68b32e3e] 可能的解决方案:是(java.lang.Object),是(java.lang.Object),any(),any(),any(groovy.lang.Closure),use([Ljava.lang.Object;) 在Main $ _main_closure1.doCall(hash_text.groovy:10) 在Main.main(hash_text.groovy:9)
答案 0 :(得分:2)
你只有一个语法错误。而不是
println ${it}
使用
println it
或
println "${it}"
答案 1 :(得分:1)
不知道你是否有明确的理由这样做,但你不需要在groovy脚本中使用显式类。此外,还会在您的脚本中自动注入隐式test.groovy
集合。
换句话说,将以下内容粘贴到println "ARGS: $args"
println "CLASS: ${args.class}"
~> groovy test.groovy foo bar
ARGS: [foo, bar]
CLASS: class [Ljava.lang.String;
给出以下执行结果:
args
其中类打印输出意味着隐式context?.let {
val color = ContextCompat.getColor(it, R.color.colorPrimary)
// ...
}
变量的类型为String数组。