it-swarm.com.ru

Использование JavaFX с Intellij IDEA

Я точно следовал учебнику и не могу заставить его работать. Учебник находится под JavaFX and IntellijNon-modular from IDE разделы: https://openjfx.io/openjfx-docs/#install-Java

Вот сообщение об ошибке, которое я получаю при попытке запустить проект Java Intex Intellij Idea по умолчанию:

"C:\Program Files\Java\jdk-11.0.1\bin\Java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.Zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
Java.lang.module.FindException: Module javafx.base not found

Process finished with exit code 1

Это мало что значит для меня, как я вижу javafx.base под lib на боковой панели: enter image description here

Путь, ведущий к jdk-11.0.1 а также javafx-sdk-11.0.1:

C:\Program Files\Java

Java установлена:

C:\Users\jonat>Java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

Java_HOME переменная (упомянутая в руководстве) установлена:

C:\Users\jonat>echo %Java_HOME%
C:\Program Files\Java\jdk-11.0.1

PATH_TO_FX переменная установлена:

C:\Users\jonat>echo %PATH_TO_FX%
C:\Program Files\Java\javafx-sdk-11.0.1\lib

Я действительно понятия не имею, куда идти отсюда. Я точно следовал учебнику, и он не работает. Любая помощь будет принята с благодарностью, и если вам нужна дополнительная информация, пожалуйста, оставьте комментарий об этом.

6
Jonathan Woollett-light

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

"C:\Program Files\Java\jdk-11.0.1\bin\Java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

Таким образом, проблема совершенно ясна: в опциях VM, которые вы установили дословно что говорит учебник :

enter image description here

Но вы не применили ваш реальный путь для PATH_TO_FX, как предлагается на картинке, вставленной после этой команды в уроке:

enter image description here

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

Error occurred during initialization of boot layer
Java.lang.module.FindException: Module javafx.controls not found

Решение

Это может быть решено двумя способами:

  1. Примените свой путь:

Отредактируйте конфигурации запуска и в параметрах VM добавьте ваш путь:

--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml

Применить и запустить. Он должен работать.

  1. Добавьте переменную среды

Вы также можете установить переменную окружения. Перейти к IntelliJ->File->Settings->Appearance & Behavior->Path Variables, и добавить PATH_TO_FX, с путем к папке lib:

enter image description here

И тогда вы можете использовать литералы $PATH_TO_FX$ или ${PATH_TO_FX} в опциях VM:

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

Применить и запустить.

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

9
José Pereda