JavaFX 11: «отсутствуют компоненты среды выполнения JavaFX» - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь запустить образец кода JavaFX (взятый из 5-го издания Java Illuminated) в JavaFX 11 и Java 11, используя jGRASP 2 в Windows 10.

Я прочитал «ПолучениеРуководство по работе с JavaFX "(https://openjfx.io/openjfx-docs/)), и хотя я добился определенного прогресса, я застрял.

Я скачал последний ZIP-файл, распаковал его и обновил CLASSPATHчтобы включить путь к JAR-файлам, необходимым для компиляции. Я могу успешно скомпилировать файл. Однако при попытке запуска появляется следующее сообщение об ошибке:

Ошибка: отсутствуют компоненты времени выполнения JavaFXи должны запускать это приложение

В руководстве «Приступая к работе» говорится, что это можно исправить, добавив следующие параметры в вызов времени выполнения:

-module-path "[path] \ lib" --add-modules = javafx.controls, javafx.fxml

Я добавил опции, но все еще получаю сообщение об ошибке.

Предыдущие статьи StackOverflow обычно end с настройкой параметра выше;увы, я не могу понять, что еще делать.

1 Ответ

0 голосов
/ 13 февраля 2019

Как первый пользователь, мне удалось заставить его работать, но это было непросто для меня.

Я полагаю, что многие люди не знакомы с этой IDE, поэтому я опубликую пошаговые инструкции в качестве базового учебника:

  • Загрузите и установите jGRASP версии 2.0.5_05 Beta.

  • Поскольку у меня установлено несколько JDK, по умолчанию был выбран JDK 10.0.2, поэтому первым делом я нашелспособ работы с JDK 11. Это можно сделать в Settings -> jGrasp Startup Settings, где я могу указать путь к своему исполняемому файлу java:

SetJDK 11

Затем я перезапустил jGrasp.Вы можете проверить, какой JDK IDE использует в Tools -> System Info -> Java Version.

  • Открыть пример класса HelloFX.Я начал с самого простого образца из документов OpenJFX .Код можно найти здесь .

  • Build -> compile, как и ожидалось, выдаст кучу ошибок, учитывая, что JavaFX больше не является частью JDK:

Compile fails

  • Следуя документации OpenJFX, нам нужно загрузить JavaFX SDK с здесь , а затем добавьте библиотеку в путь к классам.Перейдите к Settings -> PATH/CLASSPATH -> Workspace, нажмите New и добавьте один за другим различные jar-файлы JavaFX из загруженной папки SDK / lib (не менее javafx-base.jar, javafx-graphics.jar и javafx-controls.jar).

  • Build -> compile должно работать сейчас.

  • Следующий шаг: Build -> Run.Это терпит неудачу:

----jGRASP exec: java HelloFX
Error: JavaFX runtime components are missing, and are required to run this application

 ----jGRASP wedge: exit code for process is 1.
 ----jGRASP: operation complete.

Это ожидалось.Согласно документам, нам нужно установить аргументы module-path и add-modules.

  • Первая попытка: использовать Run arguments.После установки:
--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

повторный запуск завершился неудачно с тем же сообщением об ошибке, что и выше, но с одним отличием в журнале консоли:

----jGRASP exec: java HelloFX --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

Что не так с этим!?Ну ... если вы попробуете это в командной строке, то это тоже не удастся, потому что порядок аргументов неправильный, аргументы vm должны идти до имени класса.

В заключение: Run arguments не VM arguments!

  • Вторая попытка: Чтобы предоставить аргументы виртуальной машины, я нашел вариант, чтобы отредактировать Settings -> Compiler settings -> Workspace.По умолчанию используется jdk (integrated debugger) - generic.Вы можете просмотреть его и увидеть, что для Run он использует:
java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>

Так что вместо ARGS нам нужно найти способ установить FLAGS2.

К счастью, рядом с вкладкой Environment есть вкладка Flags/Args, и там мы можем установить наши аргументы vm в FLAGS2:

--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

VM args

  • Примените, закройте диалоговое окно и Build -> Run класс, теперь он будет работать!

Если вы видите консольный журнал, он содержит именно ту команду, которую вы использовали бы при запуске из командной строки:

----jGRASP exec: java --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls HelloFX

 ----jGRASP: operation complete.

Полагаю, что следующий шаг будет более сложнымпроект ...

...