Немодульная java с javafx 13: аргументы VM install4j - PullRequest
2 голосов
/ 03 ноября 2019

Параметры VM Install4J для JAVAFX, по-видимому, не передаются в JVM

В немодульном приложении, которое зависит от JAVAFX, предлагаемый подход добавляет

"--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH"

или конкретные модули для командной строки Java. Это отлично работает. Однако при создании установщика с помощью install4j и включении их в поле параметров Java Invocation VM для установщика приложение не запускается и сообщает error:java.lang.RuntimeException: No toolkit found

Это новое поведение после обновления до Java 11+ (заданная модуляризация и разделение JavaFX). По другим причинам у нас пока нет желания модулировать все наше приложение. Код отлично работает в Eclipse и с помощью командной строки вручную или запуска bat. Мы также пытались включить файл VMoptions с этими аргументами, но безрезультатно.

В настоящее время работают AdoptOpenJDK-13, JAVAFX-13 и Install4J 7.0.12

--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH

Как мы можем создать установщик install4j, который имеет такое же поведение при запуске, как и наша командная строка - распознавая javafx, - но при этом еще не модулируя полное приложение?

Аргументы командной строки:

"--module-path ${PATH_TO_FX} --add-modules ALL-MODULE-PATH"

Расширенная ошибка при запуске средства запуска install4j:

java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:830)
...