JavaFX で Java SE 6 で追加された API を使う
ただいま、ライブドアのお天気Webサービスを使って天気予報のウィジェットを作成中。(ええ、天気予報なんてありがちですよね。承知してます)
で、ウィジェットに「○○の明日の天気・・・晴れ」なんて文字列があって、それがクリックされたらデフォルト設定のブラウザを立ち上げて、それに詳しい予報を表示させたかったので、Java SE 6 で新たに追加された java.awt.Desktop を使おうと import 文を記述したら、NetBeans の JavaFX エディタ上に、コンパイルエラーのびっくりマーク ! が出る。
マウスをあわせてみると「シンボルを見つけられません」とおっしゃってる。
なにーそんな訳ないだろ。NetBeans は最新の 6.5 だし、JDK だって最新の Java SE 6u11 を設定してる。そして JavaFX は JavaFX 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 側で勝手に縛るなよって感じ。
今日は以上。