Java 8 から JavaFX を標準で使えるようになりました。
ですが、JavaFX のソースコードを Gradle でコンパイルしようとすると、
「unable to resolve class javafx.scene.Parent」というような具合に
JavaFX 関連のクラスが見つからないため、コンパイルエラーになります。
原因:jfxrt.jar にクラスパスが通っていないから
調べてみると Gradle でコンパイルするとき、/lib/ext/jfxrt.jar にクラスパスが通っていないようです。
IntelliJ IDEA などの IDE で Java 8 を JDK として設定すると、
この jfxrt.jar にクラスパスが通った状態になっています。
そのため、IDE で動かすとうまく行くけれど Gradle ではビルドできないという事象になっています。
解決策1:JavaFX Gradle Plugin を使う
Gradle で JavaFX を使えるようにするプラグインがあります。
http://speling.shemnon.com/blog/2013/05/18/javafx-gradle-plugin-0-dot-3-0-released/
このプラグインを使おうと色々とがんばってみましたが、うまくいきませんでした。
プラグインがあるリポジトリが見つからないようでした。
ということで、以下自力で…
解決策2:jfxrt.jar をクラスパスに追加する
/lib/ext/jfxrt.jar にクラスパスが通っていないので、
クラスパスに追加するよう build.gradle の dependencies に1行追加します。
dependencies {
compile files("${System.properties['java.home']}/lib/ext/jfxrt.jar")
}
これで Gradle がコンパイルするときに JavaFX 関連のクラスを参照できるようになります。
適切な解決策かどうかわかりませんが、とりえあずビルドしたり、テストしたりできます。