Как заставить JavaFX и Java 11 работать в IntelliJ IDEA
С недавним выпуском Java 11 JavaFX больше не включен в JDK. У меня есть существующий проект JavaFX. Мне интересно узнать, как изменить его с проекта Java 10 на Java 11. Я уверен, что я правильно установил Java 11, и я могу изменить SDK по умолчанию с Java 10 на Java 11. Что я не делаю Я знаю, как я могу заставить JavaFX работать с Java 11.
Я скачал последнюю версию JavaFX здесь. Я извлек его в свою папку Java, которая содержит мои другие JDK, но я действительно не знаю, что делать в этот момент. Я прочитал несколько длинных руководств, которые описывают, как подключить проект с помощью Maven или Gradle, но я никогда не использовал их. Есть ли способ добавить поддержку JavaFX в меню IntelliJ?
1 ответ
Загрузите соответствующий JavaFX SDK для вашей операционной системы и разархивируйте его в нужное место, например /Users/your-user/Downloads/javafx-sdk-11.
- Создать проект JavaFX
Создайте проект JavaFX. Укажите имя проекта, например, HelloFX, и местоположение. Когда проект открывается, классы JavaFX не распознаются.
- Набор JDK 11
Перейдите в Файл -> Структура проекта -> Проект и установите SDK проекта на 11. Вы также можете установить уровень языка на 11. Установите JDK 11
- Создать библиотеку
Перейдите в Файл -> Структура проекта -> Библиотеки и добавьте JavaFX 11 SDK в качестве библиотеки в проект. Укажите папку lib в JavaFX SDK.
После применения библиотеки классы JavaFX будут распознаваться в среде IDE.
Предупреждение: если вы запустите сейчас проект, он скомпилируется, но вы получите эту ошибку:
Ошибка: отсутствуют компоненты времени выполнения JavaFX, и они необходимы для запуска этого приложения
Эта ошибка показана, поскольку средство запуска Java 11 проверяет, расширяет ли основной класс javafx.application.Application. Если это так, требуется наличие модуля javafx.graphics в модуле path.
- Добавить параметры виртуальной машины
Чтобы решить эту проблему, нажмите Run -> Edit Configurations... и добавьте следующие параметры VM:
--module-path% PATH_TO_FX% --add-modules = javafx.controls, javafx.fxml
Обратите внимание, что проект по умолчанию, созданный IntelliJ, использует FXML, поэтому наряду с javafx.controls требуется javafx.fxml. Если в вашем проекте используются другие модули, вам также необходимо добавить их. Нажмите "Применить" и закройте диалоговое окно.
- Запустить проект
Нажмите Run -> Run..., чтобы запустить проект, теперь он должен работать нормально.
Вы можете загрузить версию Java, которая включает JavaFX, с https://www.azul.com/downloads/zulu/zulufx/. В этом случае не требуется специальной настройки для запуска приложений JavaFx на Java 11. JavaFX будет работать так же, как на Java 8.