JythonからJavaFX 2を利用する

JythonからJavaFX 2を利用する

Windows XP環境で
JavaJDK 1.7.0_10の場合
Javaはすでに使える状態を想定しています

1 Jythonインストール
このサイト(http://www.jython.org/downloads.html)よりDownload Jython 2.7a2をゲット

2 インストール手順はこちらInstallation(http://wiki.python.org/jython/InstallationInstructions
java -jar jython_installer-2.7a2.jar
  特に難しいところはないです
D:\jython2.7a2へインストールしたとする

3 ユーザー環境設定(jfxrt.jarのクラスパス設定、jythonのホームとパス設定)
  jfxrt.jarのクラスパス設定はコマンドプロンプトから実行するため必須
SET JAVAFX_HOME=D:\Program Files\Java\jdk1.7.0_10
SET CLASSPATH=%JAVAFX_HOME%\jre\lib\jfxrt.jar;%CLASSPATH%
SET PATH=D:\jython2.7a2\bin;%PATH%
SET JYTHON_HOME=D:\jython2.7a2

定番のHello Worldで動作確認
CX's Hello, World!
http://cx20.main.jp/blog/hello/2012/11/28/hello-javafx-jython-world/
  jython Hello.py

Mac OS X 10.7.5の環境でなら

1 Jythonインストール
このサイト(http://www.jython.org/downloads.html)よりDownload Jython 2.7a2をゲット

2 インストール手順はこちらInstallation(http://wiki.python.org/jython/InstallationInstructions
java -jar jython_installer-2.7a2.jar
  特に難しいところはないです
ホームディレクトリへjython2.7a2がインストールされます

3 .cshrcファイルへ設定
  a. まだjfxrt.jarのクラスパス設定をしていない場合はターミナルでJavaFX 2を使えるようにするためjfxrt.jarをクラスパス設定
   jfxrt.jarのクラスパス設定はターミナルから実行するため必須

  setenv CLASSPATH ${CLASSPATH}:/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jfxrt.jar

  JavaFXホーム設定

  setenv JAVAFX_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home

b. Jythonホームとパス設定

setenv JYTHON_HOME /Users/hshino/jython2.7a2
setenv PATH ${PATH}:/Users/hshino/jython2.7a2/bin

4 定番のHello Worldで動作確認
CX's Hello, World!(http://cx20.main.jp/blog/hello/2012/11/28/hello-javafx-jython-world/

[Macintosh:JavaFX2/Jython/Hello] hshino% jython Hello.py
*1356343676*sys-package-mgr*: processing new jar, '/Users/hshino/jython2.7a2/jython.jar'
*1356343677*sys-package-mgr*: processing new jar, '/Users/hshino/junit4.5/junit-4.5.jar'
*1356343678*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/jfxflow-1.0-alpha-b3.jar'
*1356343679*sys-package-mgr*: processing new jar, '/Users/hshino/visage/Visage/lib/desktop/VisageFX.jar'
*1356343680*sys-package-mgr*: processing new jar, '/Users/hshino/visage/Visage/lib/desktop/visagert-main.jar'
*1356343681*sys-package-mgr*: processing new jar, '/Users/hshino/visage/Visage/lib/shared/visagert.jar'
*1356343682*sys-package-mgr*: processing new jar, '/Users/hshino/visage/Visage/lib/shared/visagec.jar'
*1356343683*sys-package-mgr*: processing new jar, '/Users/hshino/visage/Visage/lib/shared/visagedoc.jar'
*1356343684*sys-package-mgr*: processing new jar, '/Users/hshino/bin/sbt-launch.jar'
*1356343685*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/thingsfx-ThingsFX-8617488_2/target/thingsfx-0.1.0-SNAPSHOT.jar'
*1356343686*sys-package-mgr*: processing new jar, '/Users/hshino/Desktop/JavaFX2/ScenicView/ScenicView.jar'
*1356343687*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/JFXtras-jfxtras-labs_new_JAR/JFXtras-jfxtras-labs-2.2-SNAPSHOT.jar'
*1356343688*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/datafx-all/datafx-redfx.jar'
*1356343689*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/datafx-all/datafx.jar'
*1356343690*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jfxrt.jar'
*1356343691*sys-package-mgr*: processing new jar, '/Users/hshino/Downloads/javax.jms-1.1.jar/javax.jms-1.1.jar'
*1356343692*sys-package-mgr*: processing new jar, '/Users/hshino/Desktop/JavaFX2/SearchDemo/lib/restfx-1.0.jar'
*1356343693*sys-package-mgr*: processing new jar, '/Users/hshino/Desktop/JavaFX2/SearchDemo/lib/restfx-server-1.0.jar'
*1356343694*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/resources.jar'
*1356343695*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/rt.jar'
*1356343696*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jsse.jar'
*1356343697*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jce.jar'
*1356343698*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/charsets.jar'
*1356343699*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/jfr.jar'
*1356343700*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/JObjC.jar'
*1356343701*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/dnsns.jar'
*1356343702*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/localedata.jar'
*1356343703*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/sunec.jar'
*1356343704*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar'
*1356343705*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar'
*1356343706*sys-package-mgr*: processing new jar, '/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/ext/zipfs.jar'
*1356343707*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/aopalliance.jar'
*1356343708*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/apple_provider.jar'
*1356343709*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/AppleJavaExtensions.jar'
*1356343710*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/asm-debug-all.jar'
*1356343711*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/AWTShapeExtruder.jar'
*1356343712*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/cglib-2.2.2.jar'
*1356343713*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/commons-logging-1.1.1.jar'
*1356343714*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/FXCanvas3D3.0.jar'
*1356343715*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/geomajas-impl-1.7.1-sources.jar'
*1356343716*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/gluegen-rt-1.0.jar'
*1356343717*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guava-10.0.1.jar'
*1356343718*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-3.0.jar'
*1356343719*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-assistedinject-3.0.jar'
*1356343720*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-grapher-3.0.jar'
*1356343721*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-jmx-3.0.jar'
*1356343722*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-jndi-3.0.jar'
*1356343723*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-multibindings-3.0.jar'
*1356343724*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-persist-3.0.jar'
*1356343725*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-servlet-3.0.jar'
*1356343726*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-spring-3.0.jar'
*1356343727*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-struts2-plugin-3.0.jar'
*1356343728*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/guice-throwingproviders-3.0.jar'
*1356343729*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/hessian-4.0.7.jar'
*1356343730*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/j3dcore.jar'
*1356343731*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/j3dutils.jar'
*1356343732*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/java-plugin-1.6.0.23.jar'
*1356343733*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/javax.inject.jar'
*1356343734*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jcommon-1.0.17.jar'
*1356343735*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jfreechart-1.0.14.jar'
*1356343736*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jh.jar'
*1356343737*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jinput.jar'
*1356343738*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jna.jar'
*1356343739*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/joal-natives-macosx-universal.jar'
*1356343740*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/joal-test.jar'
*1356343741*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/joal.jar'
*1356343742*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jocl-natives-macosx-universal.jar'
*1356343743*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jocl.jar'
*1356343744*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jogl.jar'
*1356343745*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/jtidy-r938.jar'
*1356343746*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lwjgl-debug.jar'
*1356343747*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lwjgl.jar'
*1356343748*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lwjgl_test.jar'
*1356343749*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lwjgl_util.jar'
*1356343750*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lwjgl_util_applet.jar'
*1356343751*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/lzma.jar'
*1356343752*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/MigLayoutFX2-1.0-SNAPSHOT.jar'
*1356343753*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/orbitbehaviorinterim2.1.jar'
*1356343754*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.apache.httpcomponents.httpclient_4.1.2.jar'
*1356343755*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.apache.httpcomponents.httpcore_4.1.3.jar'
*1356343756*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.OpenNI.jar'
*1356343757*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.springframework.asm-3.0.5.RELEASE.jar'
*1356343758*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.springframework.beans-3.0.6.RELEASE.jar'
*1356343759*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.springframework.context-3.0.5.RELEASE.jar'
*1356343760*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.springframework.core-3.0.5.RELEASE.jar'
*1356343761*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/org.springframework.expression.jar'
*1356343762*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/platform.jar'
*1356343763*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/QTJava.zip'
*1356343764*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/s2util-0.0.0.jar'
*1356343765*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/spring-beans-2.5.6.jar'
*1356343766*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/spring-beans-3.0.5.RELEASE-sources.jar'
*1356343767*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/spring-beans.jar'
*1356343768*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/swingx-beaninfo-1.6.2.jar'
*1356343769*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/swingx-core-1.6.2.jar'
*1356343770*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/ui.jar'
*1356343771*sys-package-mgr*: processing new jar, '/Library/Java/Extensions/vecmath.jar'
*1356343772*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/AppleScriptEngine.jar'
*1356343773*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/dns_sd.jar'
*1356343774*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/j3daudio.jar'
*1356343775*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/j3dcore.jar'
*1356343776*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/j3dutils.jar'
*1356343777*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/jai_codec.jar'
*1356343778*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/jai_core.jar'
*1356343779*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/junit-4.9.jar'
*1356343780*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/mlibwrapper_jai.jar'
*1356343781*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/MRJToolkit.jar'
*1356343782*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/QTJava.zip'
*1356343783*sys-package-mgr*: processing new jar, '/System/Library/Java/Extensions/vecmath.jar'
2012-12-21 20:08:16.277 java[3836:707] [JRSAppKitAWT markAppIsDaemon]: Process manager already initialized: can't fully enable headless mode.

5 既存のJavaFX 2 FXMLアプリをJythonから起動するなら
同じフィルダ内でfxmlファイル名がAnalogClock.fxml、メインクラス(メインスクリプト)をAnalogClock.pyとすると


AnalogClock.py

#!/usr/bin/env jython
import sys
from javafx.application import Application
from javafx.fxml import FXMLLoader
from javafx.scene import Scene

class AnalogClock(Application):
    def start(self, stage):
        root = FXMLLoader.load(self.getClass().getResource('/AnalogClock.fxml'))

        scene = Scene(root)

        stage.setScene(scene)
        stage.show()


   if __name__ == '__main__':
      Application.launch(AnalogClock().class,  sys.argv[1:])

jython AnalogClock.py
Windowsで実行すると

Mac OS Xで実行すると