Tadotter - Eclipse RCP版 (1.1.2.v20090921) | 2009-09-21 15:19 |
Tadotter - JavaFX版 (2.0.1) | 2009-07-06 11:19 |
JavaFX 1.2 SDKで作ったアプリケーションはJRE6上で動くにも関わらず、 JavaFX 1.2 SDKがライブラリとして提供するJDKのAPIのバージョンは5です。 このせいでJava6から登場したAPIを使うことができません。 ただし、実行の際はJava6で動くのでJava6のAPIが呼び出せるはずです。 そこでリフレクションという手は使えます。 Javaのリフレクションの何たるかはここでは省きます。
以下の例は、java.awt.DesktopというJava6で登場したAPIを リフレクションで無理やり呼び出しています。
例:
import java.lang.Class; import java.lang.Throwable; import java.lang.reflect.Method; import java.net.URI; public function browse(uriAsString:String):Void{ try{ var cls:Class = Class.forName("java.awt.Desktop"); //public static synchronized java.awt.Desktop java.awt.Desktop.getDesktop() //を呼び出してインスタンスを取得します。 var method:Method = cls.getMethod("getDesktop"); var objDesktop = method.invoke(null); //public void java.awt.Desktop.browse(java.net.URI) throws java.io.IOException //を呼び出してデフォルトのブラウザを起動します。 method = cls.getMethod("browse", Class.forName("java.net.URI")); method.invoke(objDesktop,new URI(uriAsString)); }catch(e:java.io.IOException){ e.printStackTrace(); }catch(e:Throwable){ e.printStackTrace(); } }
将来的にJavaFX SDKがJava6をサポートしてくれることを願っています。
Java6のAPIを呼び出すJavaプロジェクトを独立して作りjar化します。 もちろんJava6でコンパイルしてください。 このjarをJavaFXプロジェクトのライブラリに追加する方法は有効です。 JavaFXプロジェクトからはJava6のAPIを直接は呼び出すことなく、 サードパーティのjarというワンクッションを置いて呼び出すことが可能です。
[PageInfo]
LastUpdate: 2009-09-07 12:20:50, ModifiedBy: happyhills
[Permissions]
view:all, edit:login users, delete/config:members