Параметры, которые вы указали в командной строке, расположены в неправильном порядке. Все, что указано после имени файла jar (или основного класса, если вы не используете параметр -jar
), будет интерпретироваться как аргумент вашего Java приложения (в отличие от аргумента JVM), и передается в массив строк в методе
public static void main(String[])
в основном классе.
Таким образом, вы должны использовать
java --module-path "C:\pathtofxsdk11\lib" --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.swing,javafx.graphics -jar C:\path\file.jar
Обратите внимание, что это не означает jar файл можно использовать как «исполняемую банку», которую можно просто запустить в любой системе, поскольку среда выполнения JavaFX не включена в стандартную среду выполнения Java начиная с версии 11 и далее. Вместо этого вы можете использовать инструмент jpackage
, который включен в JDK 14, для создания собственного пакета установщика. Этот пакет будет включать среду выполнения Java, которую вы можете настроить для включения JavaFX.
Вы должны сначала загрузить и распаковать модульную версию JavaFX («jmods») из здесь .
Тогда ваша команда jpackage будет выглядеть примерно так:
jpackage --module-path "C:\pathtofxmods" --add-modules javafx.controls,javafx.fxml,javafx.swing --input "C:\path" --main-jar file.jar --type exe --name MyApp --dest "C:\path\to\generated\executable"
где C:\pathtofxmods
- это библиотека, которую вы распаковали на предыдущем шаге: она должна включать коллекцию файлов *.jmod
. Это создаст файл .exe
в C:\path\to\generated\executable
, который установит приложение в системе windows. Вы можете распространять это - обратите внимание, что конечным пользователям даже не нужна JRE, так как это свяжет JRE с пакетом.
Вы также можете запустить jlink
независимо, чтобы создать JRE (с JavaFX), то есть в комплекте с приложением. См. полное руководство и полную документацию инструмента .