groovyファイルとjavaファイルの間での相互参照2010年04月11日

今、JSF(JavaServer Faces)の勉強をしているのですが、IBMのdeveloperWorks JapanサイトにJSFの説明記事があるのでそれを参考にしています。その記事の中で、住所情報を入力すると地図と気象情報を表示するJSFのサンプルアプリを使用しており、ソースコードもダウンロード可能なので落として試して見ました。

サンプルを実装していく過程で、使用している管理用Beanのソースファイルをコンパイルしていくのですが、groovyファイルとjavaファイルとに分かれています。で、ちょっと困ったのが、javaファイルのクラスとgroovyファイルのクラスとがお互いにお互いを参照しているということでした。
(groovyファイルはコンパイルしなくてもそのまま実行可能らしいのですが、今回は全てclassファイルにコンパイルして使用しようと決めたので)
そのまま別々にclassファイルにコンパイルすると、参照しているクラスを解決できないというエラーが出てしまいます。

周りの人に聞いたところ、いっぺんにコンパイルすると問題なくコンパイルできるんじゃないの?という話を聞いたので、javaファイルをgroovyファイルに変換するか、groovyファイルをjavaファイルに変換できないか調べていたら、groovyのインストールディレクトリ下のbinディレクトリに「java2groovy.bat」という"いかにも"なコマンドがありました。

そのコマンドを使ってjavaファイルをいったんgroovyファイルに変換し、その後2つのファイルをgroovycコマンドで一気にコンパイルしたら、問題なくコンパイルされました。

ちなみに、groovyファイルはjavacコマンドでもコンパイルできるらしいのですが、javacコマンドで2つのファイルをいっぺんにコンパイルしようとしたところ、何だか文法エラーになってしまってうまくいきませんでした。