コマンドライン引数

Groovy起動時に指定したコマンドライン引数は“args”という名前のリスト型変数に入っている.例えば,以下のように起動すると確認できる.“$”はコマンドプロンプトである.

$ groovy -e "args.each{println it}" aaa bbb
aaa
bbb
  

“args”以外の名前にするとエラーになる.

$ groovy -e "hoge.each{println it}" aaa bbb
Caught: java.lang.NullPointerException: Cannot invoke method: each on null object
java.lang.NullPointerException: Cannot invoke method: each on null object
    at org.codehaus.groovy.runtime.Invoker.invokeMethod(Invoker.java:125)
    at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:106)
    at main.run(main:1)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
<<以下省略>>
  

クラスを作成する場合は,以下のようにmainメソッドの引数となる.

class Foo{
  static void main(args){
    args.each{println it}
  }
}
  
$ groovy Foo.groovy aaa bbb
aaa
bbb
  

mainメソッドの引数であれば名前は何でも良い.例えば以下の通り.

class Baz{
  static void main(hoge){
    hoge.each{println it}
  }
}
  
$ groovy Baz.groovy aaa bbb
aaa
bbb
  

なお,動作環境は以下の通りである.

  • Groovy 1.0 beta7
  • JDK 1.4.2_04
  • Windows XP Professional Service Pack1