Проблема создания и запуска JavaFX .jar файла - PullRequest
0 голосов
/ 18 апреля 2020

Мне трудно заставить приложение JavaFX работать вне моей IDE. Я использую IntelliJ IDEA 2019.3 и компилирую с использованием openjdk-12. Версия JavaFX SDK - 11.0.2, и я использую внешние библиотеки jfoenix-9.0.8 и jSerialComm-2.6.0. Операционная система - Windows 10, установлен JDK 14, и я могу запускать приложения, не относящиеся к JavaFX, созданные аналогичным образом с использованием командной строки java -jar name.jar. Когда я пытаюсь запустить mu JavaFX .jar из командной строки, я получаю это сообщение об ошибке:

Graphics Device initialization failed for :  d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
        at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
        at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
        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:832)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
        ... 1 more
Exception in thread "main" 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:832)

Все необходимые библиотеки включены в .jar, насколько я могу судить, я следовал по нескольким потокам и пытался несколько вещей, но я всегда застрял, так как я совсем новичок в сборке Java .jar-s ..

Также попробовал следовать учебному руководству на официальной странице openjfx, где я столкнулся с проблемой при попытке компилировать свое приложение модульный и немодульный способ, благодаря внешним библиотекам.

dir /s /b src\*.java > sources.txt & javac --module-path %PATH_TO_FX%;%PATH_TO_FOENIX% --add-modules=javafx.controls --add-modules=javafx.fxml --add-modules=jfoenix-9.0.8.jar --add-modules=jSerialComm-2.6.0.jar --add-modules=javafx.graphics -d out @sources.txt & del sources.txt

Используя эту команду в Win cmd, я получаю сообщение об ошибке:

error: bad name in value for --add-modules option: 'jfoenix-9.0.8.jar'
error: bad name in value for --add-modules option: 'jSerialComm-2.6.0.jar'

PATH_TO_FX устанавливается в правильное местоположение с помощью следующего руководства, а PATH_TO_FOENIX устанавливается в местоположение с библиотеками exteranl .jar -s. Пробовал эту команду также без ".jar" в конце имени lib.

Когда я создаю информацию о модуле. java в папке, соответствующей модулю, я могу скомпилировать ее с помощью команды:

dir /s /b src\*.java > sources.txt & javac --module-path %PATH_TO_FX%;%PATH_TO_FOENIX% -d mods/LA_GUI @sources.txt 

, но затем получаю ошибку:

Error: Module javafx.fxml not found, required by LA.GUI

когда я пытаюсь использовать jlink для создания образа. Пример обеспечения в openjfx очень прост, поэтому я могу здесь что-то пропустить. И это все. Попытался добавить поддержку фреймворка для Maven в Intellij, но затем у Maven возникли проблемы с поиском различных пакетов, и после каждой решенной ошибки при попытке запустить тест Maven появлялся другой, поэтому я отказался от этого, так как никогда не использовал его раньше и не знал, смогу ли я вообще заставить его работать, и если .jar generatet с использованием Maven будет отличаться от того, что у меня сейчас ..

Примечание: я удалил последнюю версию JRE с моего ноутбука, потому что когда я пытался запускать даже программы hello world через java -jar name.jar он сказал, что файл был скомпилирован с использованием более новой версии, чем может запустить текущая java, что не имеет смысла, поскольку я скачал ПОСЛЕДНЮЮ JRE. Прямо сейчас у меня есть все java связанные переменные и исполняемые файлы для JDK 14, который прекрасно запускает основные программы c java, но я не могу заставить его запускать мой JavaFX .jar без вышеупомянутой ошибки. Я хотел бы перейти на другой язык программирования, подходящий для создания GUI приложений, или использовать Java Swing или что-то в этом роде, но у меня меньше месяца, чтобы завершить sh этот проект и я не могу позволить себе начать с чего-то, чего у меня нет используется раньше ..

РЕДАКТИРОВАТЬ: Это скриншот содержимого моего файла .jar, который я пытаюсь запустить: содержимое файла .jar

...