JavaからコンパイルされてないGroovyを呼び出す方法(ルーズステートメント)

JavaからGroovyスクリプトを実行する方法。やり方はいくつかあるのですが、その中から比較的シンプルなやりかたを紹介。

  new GroovyShell().parse(new File("....name.groovy")).run();

これだけです。....name.groovy のところを該当のスクリプトファイル名に置換すれば動作するはずです。詳しいことは、Javadochttp://groovy.codehaus.org/api/index.html)で確認してください。ちなみに、Groovy1.5 と、Groovy1.6 ではそこそこ変更されているようでした。

また、実行されるスクリプトの中身についてですが、ルーズステートメントと、クラス定義の両方がある場合に、エラーが発生することがあるようます。というのは、Foo.groovyの中のルーズステートメントは、実行時にFoo.Mainメソッド内の処理とみなされるためです。つまり、Foo.groovyのスクリプト中に、Fooクラスの定義を書いている場合、Foo.Mainを実行するためにFooクラスが作成されるので、結果、クラスの定義が2つできてしまい、コンパイルエラーとなります。解決策としては、Foo.groovyのファイル名を変えるか、Fooクラスのクラス名を変えるかしかないと思います。。。

なお、実行に必要なライブラリですが、

  • antlr-2.7.6.jar
  • asm-2.2.jar
  • commons-cli-1.0.jar
  • groovy-1.5.6.jar
僕がためしたサンプルはこれだけあれば実行できました。