ダブルクリックで起動する javafxアプリケーショ...

18
ダブルクリックで起動する JavaFXアプリケーションJAR 8JavaFX勉強会 2012-11-30 高橋 徹 (@boochnich & Java読書会)

Upload: others

Post on 17-Mar-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

ダブルクリックで起動する 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

Page 2: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

発表者について 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

Page 3: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

はじめに

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

Page 4: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、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

Page 5: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 6: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 7: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 8: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 9: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 10: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 11: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

ダブルクリックで起動する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

Page 12: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

情報源

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

Page 13: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

まとめ

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

Page 14: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

おまけ 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

Page 15: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

おまけ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

Page 16: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

サンプルプログラム注釈

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

Page 17: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

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

Page 18: ダブルクリックで起動する JavaFXアプリケーショ …torutk/activity/JavaFX_Study_201211.pdfNetBeansでJavaFXアプリケーション(3/5) •ソースを自分でコンパイル、JAR化してみる

ねこび~ん

bull ねこび~んのアイコン

httpjanetbeansorgnekobean

bull 泣き声

httpkoukaongencom