ダブルクリックで起動する JavaFXアプリケーションJAR
第8回 JavaFX勉強会 2012-11-30
高橋 徹 (boochnich amp Java読書会)
発表者について boochnich
httpdhatenanejptorutk
bull Java GUI歴 ndash jdk10時代はAWT
ndash jdk11時代はAWTNetscape IFCSwing
ndash jdk12以降はSwingJava2D(Java3D)
bull Java読書会BOF代表 ndash 1998年~毎月1回開催通算164回24冊目
httpwwwjavareadingcombof
はじめに
bull JavaFXアプリケーションの起動方法
ndashスタンドアロンプログラム
ndash Webスタート
ndash Webページに埋め込み
ndashセルフコンテインメントアプリケーション
javafxpackagerでスタンドアロンプログラム
(実行可能JAR)を作成する話です
アジェンダ
bull JDK 7u9の中にJavaFX 223
bull NetBeansでJavaFXアプリケーションを作成
bull コマンドでダブルクリック起動JARを作成
bull (おまけ)OS固有のインストーラを作成
JDK 7u9の中のJavaFX 223
CyenProgram FilesyenJavayenjdk170 (Windows OSの例)
+-- bin
| +-- javafxpackagerexe
+-- jre
| +-- lib
| +-- javafxproperties
| +-- jfxrtjar
+-- lib
+-- ant-javafxjar
+-- javafx-docletjar
(抜粋につきすべてのJavaFX関連ファイルを記載してはおりません)
JDKのディクレトリツリー中にJavaFX
関連ファイルが含まれています
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
発表者について boochnich
httpdhatenanejptorutk
bull Java GUI歴 ndash jdk10時代はAWT
ndash jdk11時代はAWTNetscape IFCSwing
ndash jdk12以降はSwingJava2D(Java3D)
bull Java読書会BOF代表 ndash 1998年~毎月1回開催通算164回24冊目
httpwwwjavareadingcombof
はじめに
bull JavaFXアプリケーションの起動方法
ndashスタンドアロンプログラム
ndash Webスタート
ndash Webページに埋め込み
ndashセルフコンテインメントアプリケーション
javafxpackagerでスタンドアロンプログラム
(実行可能JAR)を作成する話です
アジェンダ
bull JDK 7u9の中にJavaFX 223
bull NetBeansでJavaFXアプリケーションを作成
bull コマンドでダブルクリック起動JARを作成
bull (おまけ)OS固有のインストーラを作成
JDK 7u9の中のJavaFX 223
CyenProgram FilesyenJavayenjdk170 (Windows OSの例)
+-- bin
| +-- javafxpackagerexe
+-- jre
| +-- lib
| +-- javafxproperties
| +-- jfxrtjar
+-- lib
+-- ant-javafxjar
+-- javafx-docletjar
(抜粋につきすべてのJavaFX関連ファイルを記載してはおりません)
JDKのディクレトリツリー中にJavaFX
関連ファイルが含まれています
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
はじめに
bull JavaFXアプリケーションの起動方法
ndashスタンドアロンプログラム
ndash Webスタート
ndash Webページに埋め込み
ndashセルフコンテインメントアプリケーション
javafxpackagerでスタンドアロンプログラム
(実行可能JAR)を作成する話です
アジェンダ
bull JDK 7u9の中にJavaFX 223
bull NetBeansでJavaFXアプリケーションを作成
bull コマンドでダブルクリック起動JARを作成
bull (おまけ)OS固有のインストーラを作成
JDK 7u9の中のJavaFX 223
CyenProgram FilesyenJavayenjdk170 (Windows OSの例)
+-- bin
| +-- javafxpackagerexe
+-- jre
| +-- lib
| +-- javafxproperties
| +-- jfxrtjar
+-- lib
+-- ant-javafxjar
+-- javafx-docletjar
(抜粋につきすべてのJavaFX関連ファイルを記載してはおりません)
JDKのディクレトリツリー中にJavaFX
関連ファイルが含まれています
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
アジェンダ
bull JDK 7u9の中にJavaFX 223
bull NetBeansでJavaFXアプリケーションを作成
bull コマンドでダブルクリック起動JARを作成
bull (おまけ)OS固有のインストーラを作成
JDK 7u9の中のJavaFX 223
CyenProgram FilesyenJavayenjdk170 (Windows OSの例)
+-- bin
| +-- javafxpackagerexe
+-- jre
| +-- lib
| +-- javafxproperties
| +-- jfxrtjar
+-- lib
+-- ant-javafxjar
+-- javafx-docletjar
(抜粋につきすべてのJavaFX関連ファイルを記載してはおりません)
JDKのディクレトリツリー中にJavaFX
関連ファイルが含まれています
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
JDK 7u9の中のJavaFX 223
CyenProgram FilesyenJavayenjdk170 (Windows OSの例)
+-- bin
| +-- javafxpackagerexe
+-- jre
| +-- lib
| +-- javafxproperties
| +-- jfxrtjar
+-- lib
+-- ant-javafxjar
+-- javafx-docletjar
(抜粋につきすべてのJavaFX関連ファイルを記載してはおりません)
JDKのディクレトリツリー中にJavaFX
関連ファイルが含まれています
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(15)
bull NetBeansで新規プロジェクト[JavaFXアプリケーション]を選択し雛形を作成
bull プレゼンなので文字を大きく
ndash CSSでチャレンジしてみます
bull NetBeans上でビルドして実行
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(25)
bull ファイルエクスプローラでJARをダブルクリック
bull コマンドプロンプトからjava ndashjarコマンド実行
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(35)
bull ソースを自分でコンパイルJAR化してみる gtjavac -cp ldquoCyenProgram Filesyenjavayenjdk170yenjreyenlibyenjfxrtjarldquo -d buildyenclasses -encoding UTF-8 srcyenhellojjfxugyenHelloJjfxugjava gtjar cvfm Hellojar hellomf -C buildyenclasses マニフェストが追加されました hellojjfxugを追加中です(入=0)(出=0)(0格納されました) hellojjfxugHelloJjfxug$1classを追加中です(入=944)(出=539)(42収縮されました) hellojjfxugHelloJjfxugclassを追加中です(入=1413)(出=864)(38収縮されました) hellojjfxugHelloJjfxugcssを追加中です(入=302)(出=214)(29収縮されました)
gtjava ndashjar Hellojar Exception in thread main javalangNoClassDefFoundError javafxapp licationApplication at javalangClassLoaderdefineClass1(Native Method) at javalangClassLoaderdefineClass(ClassLoaderjava791)
残念動きませんでしたクラスパス指定が不足してます
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(45)
bull 違いはなにか
ndash NetBeansの生成したJARと比較してみる
comjavafxmainMain$1class comjavafxmainMain$2class comjavafxmainMainclass comjavafxmainNoJavaFXFallbackclass
Manifest-Version 10 JavaFX-Version 22 implementation-vendor torutk implementation-title HelloJjfxug implementation-version 10 JavaFX-Application-Class hellojjfxugHelloJjfxug JavaFX-Class-Path HelloJjfxugjar Created-By JavaFX Packager Main-Class comjavafxmainMain
NetBeansの生成したJAR
にだけ含まれるクラスファイル群
NetBeansの生成したJARのMANIFESTMF内容
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(55)
bull -Djavafxverbose=true を指定しJARを起動する gtjava -Djavafxverbose=true -jar distyenHelloJjfxugjar (中略) 1) Try existing classpath ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar ===== 2) Try javafxruntimepath property
3) Look for cobundled JavaFX [javahome=CyenProgram FilesyenJavayenjdk170yenjre ===== URL list fileCworkHelloJjfxugdistHelloJjfxugjar fileCProgram20FilesJavajdk170jrelibjfxrtjar fileCProgram20FilesJavajdk170jrelibdeployjar fileCProgram20FilesJavajdk170jrelibpluginjar fileCProgram20FilesJavajdk170jrelibjavawsjar ===== Try calling ClassforName(hellojjfxugHelloJjfxug) using classLoader = javanet
URLClassLoader6f404c51 found class class hellojjfxugHelloJjfxug (後略)
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
ダブルクリックで起動するJARの作り方
bull javafxpackagerを使うと実行可能JARを作成できます
gtjavafxpackager -createjar -nocss2bin -appclass hellojjfxugHelloJjfxug -srcdir buildyenclasses -outdir -outfile HelloJjfxug-01 gt java ndashjar HelloJjfxug-01jar
Applicationクラスを継承したmainメソッドを持つクラスを指定
-srcdirですがJARに含
めるクラスファイルのあるディレクトリを指定
JARファイル名(拡張子不要)を指定
コマンドリファレンス
httpdocsoraclecomjavafx2deploymentjavafxpackager001htm
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
情報源
bull 「Oracle Blogs日本語のまとめ」より
[JavaFX] Native packaging for JavaFX bull httporablogs-jpblogspotjp201206native-
packaging-for-javafxhtml
bull Oracle JavaFXドキュメント rdquoDeploying JavaFX Applicationsrdquoより
bull httpdocsoraclecomjavafx2deploymentjfxpub-deploymenthtm
55 Create the Main Application JAR File など
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
まとめ
bull JavaFXにはアプリケーションのインストール実行更新の仕組みがあります
bull NetBeans 73ではプロジェクトの設定のみで簡単に利用できます
bull javafxpackagerコマンド(またはAntタスク)が提供されています
bull eclipse派な人にはe(fx)clipseプラグインがあります
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
おまけ MSI形式の作成
bull javapackagerでWindows MSI形式のインストーラを作成可能です
ndash要WiX(Windows Installer XML) 無償
bull NetBeans 73 beta2でも可能です
bull 詳しくはブログでhttpdhatenanejptorutk20121119
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
おまけ2 RPM形式の作成
bull javapackagerでLinux RPM形式のインストーラを作成可能です
ndash rpmbuildコマンドが実行できること
bull NetBeans 73 beta2でも可能です
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
サンプルプログラム注釈
CSSファイルの読み込み(ソースファイルと同じ場所に置く場合)
Scene scene = new Scene(root 300 250) scenegetStylesheets()add( thisgetClass()getResource(HelloJjfxugcss)toExternalForm())
CSSファイルの記述(Buttonクラスのフォント設定)
button -fx-font-size 24 -fx-font-family Meiryo sans-serif
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
NetBeansでJavaFXアプリケーション(補1)
bull comjavafxmainMainクラスを調べる
ndashシステムプロパティjavahome
ndash URLClassLoaderでApplication継承クラスをロードしmainメソッドを実行している
ClassLoader urlClassLoader = new URLClassLoader(urls null) ThreadcurrentThread()setContextClassLoader(urlClassLoader) Class appClass = ClassforName(appName false ThreadcurrentThread()getContextClassLoader()) Method mainMethod = appClassgetMethod(main new Class[] new String[0]getClass() ) mainMethodinvoke(null new Object[] args )
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom
ねこび~ん
bull ねこび~んのアイコン
httpjanetbeansorgnekobean
bull 泣き声
httpkoukaongencom