Использование JavaFX с Intellij IDEA - PullRequest
0 голосов
/ 22 ноября 2018

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

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

"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

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

1 Ответ

0 голосов
/ 22 ноября 2018

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

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

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

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. Примените свой путь:

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

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

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

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

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

enter image description here

И затем вы можете использовать литералы$PATH_TO_FX$ или ${PATH_TO_FX} в параметрах виртуальной машины:

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

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

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

...