JavaFX で Java SE 6 で追加された API を使う

ただいま、ライブドアのお天気Webサービスを使って天気予報のウィジェットを作成中。(ええ、天気予報なんてありがちですよね。承知してます)


で、ウィジェットに「○○の明日の天気・・・晴れ」なんて文字列があって、それがクリックされたらデフォルト設定のブラウザを立ち上げて、それに詳しい予報を表示させたかったので、Java SE 6 で新たに追加された java.awt.Desktop を使おうと import 文を記述したら、NetBeansJavaFX エディタ上に、コンパイルエラーのびっくりマーク ! が出る。
マウスをあわせてみると「シンボルを見つけられません」とおっしゃってる。


なにーそんな訳ないだろ。NetBeans は最新の 6.5 だし、JDK だって最新の Java SE 6u11 を設定してる。そして JavaFXJavaFX 1.0 SDK Update 1 だぞ。何が不満なんだよ、おい。


なんてぶつぶつ言いながら調べてみて、びつくり。


JavaFX SDK には rt15.jar なんてのが元から含まれていて、このライブラリが Java SE 5 だった。
NetBeansプラグインはこれを見てるのねー。あーそー。
てっきり [Tools] メニュー 、[Java Platforms] で設定した Java SE 6u11 が使われているもんだと思ったら、違うのね。
あー、はまった。


解決方法は、WidgetFX 開発者 Stephen Chin さんのブログで発見。さすがです。
http://steveonjava.com/2009/01/02/hacking-javafx-10-to-use-java-16-features/


つまり、JavaFX SDK に含まれている rt15.jar を一旦削除するかリネームしてしまい、Java SE 6 の jre/lib の中にある rt.jar を rt15.jar という名前でコピーして NetBeans を起動しなおせば全て OK だぜとのこと。
この方法で解決しました。


それにしても、どのバージョンの Java を使うかを JavaFX SDK 側で勝手に縛るなよって感じ。


今日は以上。