質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

1260閲覧

JDK11+JavaFX 配布用JREで画像が表示されない.

tmakita

総合スコア70

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/08/26 01:27

前提・実現したいこと

JDK11を使用し始めましたが、まだわからないことだらけです.
まずJavaFXを使用したHellp World!アプリのプロジェクトを作成しました.Eclipse上で動作が確認できています.(つまりちゃんと動いています)
実行可能JARをエキスポートして、更に配布用のJREを作成しました.実行可能JAR+配布用のJREでプログラムが動くようにしたいです.

問題点

実行可能JARを配布用のJREのjava.exeで動かすと、アプリケーションの背景画像が表示されません.実行可能JARをJDK11のjava.exeで動かすとアプリケーションの背景画像はちゃんと表示されます.

実行環境作成

JDK11

Oracle Open JDKを落としました.
Java Platform, Standard Edition 11 Reference Implementations

JavaFX

以下のGluonのを落としました.バージョンは11.0.12です.
Gluon

JDKのマージ

いちいち、--module-path, --add-modulesをやらなければならないのは手間であるため、以下のURLを参考にさせていただいて、JDKとJavaFXをマージしました.

OpenJDK 11にJavaFXを導入する

マージしたJDKは、C:\PROGRA~1\Java\jdk-11 に置いています.

Eclipse

たぶん最新です.
Version: 2021-06 (4.20.0)
Build id: 20210612-2011

問題発生までの経緯

Eclipseでのプロジェクト作成

以下のような感じです.C:\PROGRA~1\Java\jdk-11は"oracle-open-jdk-11"の名前でライブラリ登録してあります.)
Eclipseのプロジェクト

実行可能JARの作成

Eclipseの以下の画面で作成しました.

実行可能JARの作成

jdepsの実行

以下の実行結果でした.

PS D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2> cmd /c C:\PROGRA~1\Java\jdk-11\bin\jdeps.exe --module-path C:\PROGRA~1\Java\jdk-11\lib -s HelloEarthRise.jar HelloEarthRise.jar -> java.base HelloEarthRise.jar -> javafx.base HelloEarthRise.jar -> javafx.controls HelloEarthRise.jar -> javafx.graphics javafx.base -> java.base javafx.base -> java.desktop javafx.controls -> java.base javafx.controls -> javafx.base javafx.controls -> javafx.graphics javafx.fxml -> java.base javafx.fxml -> java.scripting javafx.fxml -> java.xml javafx.fxml -> javafx.base javafx.fxml -> javafx.graphics javafx.graphics -> java.base javafx.graphics -> java.desktop javafx.graphics -> java.xml javafx.graphics -> javafx.base javafx.graphics -> jdk.unsupported javafx.media -> JDK removed internal API javafx.media -> java.base javafx.media -> javafx.base javafx.media -> javafx.graphics javafx.swing -> java.base javafx.swing -> java.datatransfer javafx.swing -> java.desktop javafx.swing -> javafx.base javafx.swing -> javafx.graphics javafx.swing -> jdk.unsupported.desktop javafx.swt -> java.base javafx.swt -> javafx.base javafx.swt -> javafx.graphics javafx.swt -> not found javafx.web -> java.base javafx.web -> java.desktop javafx.web -> java.xml javafx.web -> javafx.base javafx.web -> javafx.controls javafx.web -> javafx.graphics javafx.web -> javafx.media javafx.web -> jdk.jsobject javafx.web -> jdk.xml.dom jrt.fs -> java.base

jlinkの実行結果

以下になります.

PS D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2> cmd /c C:\PROGRA~1\Java\jdk-11\bin\jlink.exe --compress=2 --module-path C:\PROGRA~1\Java\jdk-11\jmods --add-modules java.base,javafx.base,javafx.controls,javafx.graphics --output jre-min PS D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2> tree jre-min Folder PATH listing for volume ボリューム Volume serial number is AC93-7CE8 D:\MY_DOCUMENTS\PROJ\PRO-JAVAFX-9\PRO-JAVAFX-9-MASTER\CHAPTER1\HELLOEARTHRISE2\JRE-MIN ├─bin │ └─server ├─conf │ └─security │ └─policy │ ├─limited │ └─unlimited ├─include │ └─win32 ├─legal │ ├─java.base │ ├─java.datatransfer │ ├─java.desktop │ ├─java.prefs │ ├─java.xml │ ├─javafx.base │ ├─javafx.controls │ ├─javafx.graphics │ └─jdk.unsupported └─lib ├─security └─server

試したこと

JDK11のjava.exeで実行した場合

コマンドラインは以下の通り、ちゃんとアプリケーションの背景画像が表示されます.

PS D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2> cmd /c C:\PROGRA~1\Java\jdk-11\bin\java -jar HelloEarthRise.jar

アプリケーション画像:正常動作

配布用のJREで実行した場合

コマンドラインは以下の通り、アプリケーションは起動しますが背景画像が欠落します.

PS D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2> cmd /c D:\My_Documents\Proj\pro-javafx-9\pro-javafx-9-master\chapter1\HelloEarthRise2\jre-min\bin\java.exe -jar HelloEarthRise.jar

アプリケーション画像:背景欠落

該当のソースコード

以下から持ってきています.ただし画像が当該のURLに置かれていない、そのままだと真っ黒の背景になってしまうなどありましたので、若干手を加えてあります.

元ソースコード

※ コードを入れると文字数オーバーで投稿できないため修正部分のみ以下に記述します.

java

1 // Create an ImageView containing the Image 2 Image image = new Image("https://upload.wikimedia.org/wikipedia/commons/8/87/Apollo_10_earthrise.jpg"); 3 ImageView iv = new ImageView(image); 4 iv.setFitWidth(1024); 5 iv.setPreserveRatio(true); 6 iv.setSmooth(true); 7 iv.setCache(true);

java

1 // Combine ImageView and Group 2 Group root = new Group(iv, scrollPane); 3 Scene scene = new Scene(root, 1024, 1024);

補足情報(FW/ツールのバージョンなど)

Windows 10で実行しております.

以上 ご教示いただければ幸いです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問