日々常々

ふつうのプログラマがあたりまえにしたいこと。

GroovyFX Alphaで躓いたトコ(ビルド編)

簡単に言うと

GroovyFX は JavaFX 2.0 を Groovy にするもの。

The project is currently in Alpha 1.0 state.

Alphaです。

ダウンロード

jar とか zip とかそんなのありません。なんでソースを http://svn.codehaus.org/gmod/groovyfx/trunk/ から引っ張り出して自分でjar作りましょう。

IDE準備

リポジトリに入っているのは NetBeans のプロジェクトですので、素直に NetBeans でやります。NetBeans使い慣れてないのに*1。とりあえず NetBeans7.0 JavaSE をダウンロード、インストール。それから Groovyプラグイン をインストール。動作検証として、Javaプロジェクト作ってGroovyスクリプト作って実行するくらいはしておきます。
この辺りの説明はパス。GroovyプラグインのGroovyのバージョンが1.6.4っぽいのも、とりあえずは気にしない。

チェックアウト

チーム -> Subversion -> チェックアウト。
リポジトリURLに http://svn.codehaus.org/gmod/groovyfx/trunk/ を入れて、後は何も変更せずそのまま行きます。チェックアウトにはそれなりに時間がかかります。おとなしく待ちましょう。

環境整備

意気揚々と開いてみようとしたら、ダイアログが出ると思います。もしくはなんかエラーが出てるはず。出てなきゃ読み飛ばしで良いですよ。

参照の問題
1つ以上のプロジェクトリソースが見つかりませんでした。
「プロジェクト」ウィンドウでプロジェクトを右クリックして、
参照の問題を解決」を選択して、見つからなかったりソースを探してください。

  • jfxrt.jar
    • JavaFX2.0のjarがネーヨ。
    • {JavaFX2.0のディレクトリ}/rt/lib/jfxrt.jar を使えば解決。
  • Groovy1.8
    • Groovy1.8がネーヨ。
      • プラグインで入ってるのが「Groovy 1.6.4」だからだめ。*2
      • 素直にライブラリに「Groovy1.8」を追加すれば解決。*3

デモ実行

上記設定をしたらエラーがなくなっていると思います。さっそくデモを動かしましょう。ソースパッケージに demo ってパッケージがあると思いますので、その中の適当に1つ選んで実行します。
実行は「ファイルを開いて Shift + F6」でやってます。なんか面倒。

init:
deps-jar:
Created dir: C:\xxxxx\NetBeansProjects\trunk\build
Updating property file: C:\xxxxx\NetBeansProjects\trunk\build\built-jar.properties
Created dir: C:\xxxxx\NetBeansProjects\trunk\build\classes
Created dir: C:\xxxxx\NetBeansProjects\trunk\build\empty
Compiling 1 source file to C:\xxxxx\NetBeansProjects\trunk\build\classes
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\xxxxx\NetBeansProjects\trunk\src\demo\HelloEffects.groovy: 22: unable to resolve class groovyx.javafx.GroovyFX
 @ line 22, column 1.
   import groovyx.javafx.GroovyFX
C:\xxxxx\NetBeansProjects\trunk\src\demo\HelloEffects.groovy: 19: unable to resolve class groovyx.javafx.SceneGraphBuilder
 @ line 19, column 1.
   import groovyx.javafx.SceneGraphBuilder
2 errors
C:\xxxxx\NetBeansProjects\trunk\nbproject\build-impl.xml:627: The following error occurred while executing this line:
C:\xxxxx\NetBeansProjects\trunk\nbproject\groovy-build.xml:23: Compilation Failed
構築失敗 (合計時間: 0 秒)

盛大にこけます。これはなんかコンパイル済んでないみたい?よくわからないのですが、プロジェクトを右クリックして「構築」を実行します。そしたらこの問題は解決するみたいです。Groovyクラスのコンパイルタイミングの問題なんでしょうかねー?


構築後に実行。

init:
Deleting: C:\xxxxx\NetBeansProjects\trunk\build\built-jar.properties
deps-jar:
Updating property file: C:\xxxxx\NetBeansProjects\trunk\build\built-jar.properties
compile-single:
run-single:
Fallback to Prism SW pipeline
Exception in thread "main" java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: C:\xxxxx\javafx-sdk2.0-beta-64\rt\bin\mat.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:255) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:30) at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:91) at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:17) at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:55) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.UnsatisfiedLinkError: C:\xxxxx\javafx-sdk2.0-beta-64\rt\bin\mat.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform (中略) Java Result: 1 構築成功 (合計時間: 1 秒)
これは私の環境が混在してるからっぽいです。NetBeansの実行環境のJavaと使う事にしたJavaFX2.0の不一致で、両方64bitに揃えることで解決。 他にも色々でるかもしれません*4。最後は「どれだけ環境揃えてもコンパイルできない!」になるかもしれません。alphaなんでその辺りは仕方ないものとするしか……何とかできない人は触っても意味無いですし。(と言いつつ苦戦してる私。)たまにすんなり通るリビジョンがあって、最初触った時はそれでした…おかげで「動く」って言う確信は持ててるので進めるのですが。 とりあえずdemoに入ってるのは、そのまま実行すれば一通り動きました。 エラーが無くなれば「GroovyFX.jar」が作れます。「jarさえ出来ればこっちのもの!」と思いきや、ここでもいくつか躓きました。それは次の機会に…。

*1:Java7触る時に使ってるくらい

*2:これはこれで使ってるので、削除とかしちゃうとプラグインが動かなくなったりします。

*3:手入力だとバージョンとの間にスペース入れられないの気持ちわるい…。入れたら入れたでエラーになるし。

*4:このエントリ書いた時点のリビジョン936はjarが作れなくて、937で解消されてました。