日記というよりは過去を振り返るときのための単なる備忘録この広告は、90日以上更新していないブログに表示しています。8u181の両方でも改めて試してみたが問題なく動作している。(Amazon-Corretto-preview-8u192.msi)は、JavaFX8のバイナリも含んでいるため、そのまま、すぐにJavaFX8のアプリが動作する。(まだプレビュー版であるが、無料で製品に使えてJava8のサポート期間が2023年まである。ビルド済みバイナリを配布しているところとしては、以下のようなところがある。(Java11のLTSが出るという噂もあったが、2018/9/27現時点ではない。Java11の長期サポート(LTS)があるOpenJ9とHotspotのいずれかの仮想マシンを選べるJavaFXのバイナリは配布されていないAdoptOpenJDKのチケットにOpenJFXのビルドに対応したいというリクエストが出ていたようだが対応の見込みがあるかどうかは不明。(OpenJFX11がライブラリ化したので今更の必要性は低いだろう。2018-09版のJava環境として、JDK11にはAdoptOpenJDK11が採用されている。restriction.とあるので、利用者が自分でダウンロードして使う分には問題なさげ。(2018/11/21追記)製品レベルのフリーで使えるビルド済みOpenJDKアマゾンがサポートしている。)インストーラ形式で提供。DownloadJava8のWindows向けバイナリを配布しているJava8の32ビット、64ビット版いずれも提供しているOpenJFXのビルド済みバイナリも提供している。ダウンロードにはログインが必要。Linuxで動作するアプリをWindowsで開発することを目的としているため。OpenJDK11でJavaFX11を使うのであればpom.xmlのdependencyに入れるだけの話である。問題は、Java8のOpenJDK8でJavaFX8を使う場合である。OpenJDKは、もともと当初よりOpenJFX(JavaFX)とは分離されているので、単にOpenJDKをビルドしただけではJavaFXは含まれていない。Oracleは、そもそもOpenJDK8のバイナリを配布していない。JavaFX8のバイナリを配布しているが、開発用途にしか使えない。AdoptOpenJDKは、OpenJDK8のバイナリを配布しているが、JavaFX8のバイナリを配布していない。結局、OpenJFXを自分でビルドするしかない。(2018/11/21追記)となると、AdoptOpenJDKのOpenJDK8ビルドに対して、OpenJFX8を独自でビルドするのが良さそう、ということになる。OpenJFXのビルド手順Windowsでのビルド手順は(基本的には)OpenJFXのWikiに書かれている。SDK等はいらないっぽい。x86どっちでも良いと思われる。OpenJFXともにソースコードはMercurialで管理されているため。WindowsにMercurialを入れてなければCygwinで入れてしまって良いと思われる。Gradleを実行するために使われる(理論的にはAdoptOpenJDKも使えそうだが、SSLの証明書に不備があってGradleがネット通信できないとか、バージョン表記が違うとか、いろいろ問題があるので、OracleのJDKを使うのが無難っぽい。)このJDKが32ビットであれば生成されるOpenJFXも32ビットになる。JDKが64ビットならOpenJFXも64ビットがビルドされる。ビルドはCygwin上のBashから行え、という指示があるので、それに従う。環境変数の設定cygwin上で、以下のような環境変数を設定する。前述のとおり、OracleのJDK8から、JavaFX8のjfxrt.jarを取り除いたJDKを示す。ANTとGRADLEの場所を示す。cygwinで動作するが、パスの形式はWindows形式のままとする。PATHには、cygwin形式のパスで指定する必要がある。2017の現在のバージョンを指定する必要がある。VS2017は大型アップデートするたびにバージョン番号がかわり、これによりVC++まわりのツールのフォルダ名が変わるっぽいので、マシン内に実在するバージョンを指定する必要がある。以下のようなフォルダがあることを確認する。内にGroovyスクリプトで書かれているので、それを確認する。)OpenJFX8のソースの入手OpenJDKまわりはMercurialで管理されているので、以下のようにもらってくる。http://hg.openjdk.java.net/openjfx/8u-dev/rtなお、これで取れてくるソースのポジションがいまいち不明である。あるので、たぶん最新が取れてきているのだと思われる。数字の進み具合からして、OpenJFX8のバージョンはOpenJDK8のバージョン番号とは直接の関係はなさそう。生成された最新のOpenJFXバイナリ(8u202?)を組み込むという形でビルド・実行しても、うまく動作してくれているようだ。ビルドまず、Gradleが動作することを確認する。tasksrtフォルダ上でgradleのタスク一覧を確認させてみる。cleanAllで初期化したのち、gradleでビルドを行う。(VS2017のVC++からの警告は山ほど出るが、エラーは出ないはず。buildディレクトリに作成される。実際にJDKに組み込むのは、この下のsdkの内容である。中のフラグをかえることでビルドする対象を変えられるようだが、通常、基本的には変える必要はなさそうである。生成した先からアンチウィルスによって隔離されてしまって戸惑った。(出来たと思ったら勝手にファイルが消えているので。)もちろん、このアンチウィルスの誤判定だと思われる(別のアンチウィルスではひっかからなかった)ので、生成物が足りているか、隔離されていないかは見たほうが良いと思う。私のところでは、以下のようなものが生成された。簡単なテスト以下のようなシステムプロパティを表示する簡単なJavaFXのコードを実行してみる。これはJavaFXでステージを作成してシステムプロパティを表示するだけのものである。}}mavenのpom.xmlは以下のようにした。.\target\javafx8example-0.0.1-SNAPSHOT.jarとりあえず動作しているようである。.\target\javafx8example-0.0.1-SNAPSHOT.jarこちらも問題なく動作しているようである。バージョン番号等はAdoptOpenJDKのものよりも、Oracleのものに近いような感じである。Zuluと同等のものに修正されたようだ。(2018/10/30追記)(cacertsが空というバグもない。)AdoptOpenJDKの8u181ではcacertsが空の問題は修正された模様。(2018/10/30追記)さすが商用レベルのOpenJDKビルドらしく、信頼性などの点で、Zuluは優れていそうである。(UnsatisfiedLinkError例外)Windows10マシンのVS2017でビルドしなおしたところ、この問題は解消した。VS2013でのビルドが不味いのか、WebViewがリンクできてなかった原因はいまいち不明である。表示中に(確実に)セグメンテーションエラーが発生してJVMが落ちる。あれば、問題は起きないっぽい。原因がOpenJ9仮想マシンなのか、OpenJFXなのか、それともビルド方法が不味いのか、バージョン不一致なのか、そのあたりの原因は不明である。いった判定をしていると正しく動作しない可能性が高い。cacertsが空なので、HTTPS通信ができない。ルート証明書の入ったjksファイルに置き換えれば使える。8u181では修正済みである。入っていれば、それほど難しくはない感じである。WindowsのJava8クライアント環境も、しばらく(2019/1以降も)延命できるかもしれない。(1)はてなブログをはじめよう!seraphyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。