запуск приложения JavaFX после jpackage - PullRequest
0 голосов
/ 18 апреля 2020

У меня какой-то действительно нубский вопрос. Я попытался создать установку для моего тестового приложения с jpackage в OpenJDK 14. Вот что я сделал:

сначала создал пользовательский JRE с

jlink --module-path "C:\Java\javafx-sdk-14\lib" --add-modules javafx.controls,javafx.fxml --output hello\myjre

, и это было успешно. Я скопировал аргументы из моего Eclipse из Run Configurations. После того, как это сделало установку с jpackage

jpackage --name HelloFX --input hello --main-jar HelloFX.jar --runtime-image hello\myjre

Это создало MSI-файл, я запустил его, и он создал запись в моих приложениях Win10. Конечно, я не знаю, как найти это в меню windows, но оно находится в моем C: \ Program Files \ HelloFX. Я обнаружил значок и файл приложения с изображением Duke, когда я попытался запустить приложение «Не удалось запустить JVM».

Может кто-нибудь мне помочь, что я делаю не так? Я действительно хочу сделать это и погрузиться в JavaFX.

1 Ответ

3 голосов
/ 18 апреля 2020

JAR-файлы JavaFX, включенные в JavaFX SDK, не включают собственный код. Вместо этого указанный код находится в каталоге bin. Это означает, что ваш пользовательский образ времени выполнения, созданный jlink, не имеет необходимого собственного кода для запуска JavaFX. У вас есть два варианта:

  1. Загрузить файлы JMOD из Gluon и использовать их при создании настраиваемого образа во время выполнения. Вы поместите файлы JMOD в --module-path вместо обычных файлов JAR.

  2. Используйте JAR-файлы JavaFX, которые публикуются в Maven Central вместо SDK , JAR-файлы Maven Central включают собственный код.

В обоих случаях обязательно используйте файлы JMOD / JAR для своей операционной системы - JavaFX определяется платформой c.

Я считаю, что первый вариант самый лучший. При использовании файлов JMOD с jlink собственный код включается в пользовательский образ среды выполнения так же, как и собственный код, указывающий c для JRE. Если вы используете второй подход, нативный код все равно будет включен в пользовательский образ среды выполнения, но его нужно будет извлечь в какое-то место на вашем компьютере (например, <user-home>/.openjfx), прежде чем его можно будет использовать 1 . Другими словами, первый вариант - чище.


1. Обратите внимание, что это извлечение выполняется автоматически с помощью JavaFX.

...