не удается разрешить символ javafx.application в IntelliJ Idea IDE

81

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

java: пакет javafx.application не существует.

Я изменил Project SDK и Project Language Level на Java 8, перезагрузил проект, но это не помогло. Затем я проверил, включен ли плагин JavaFX в настройках.

Поиск в Google и StackOverflow не дал мне больше идей о том, что не так. Заранее благодарим за любую помощь.

PS Я использую IntelliJ Idea 14.0 с java8.1.0_25 в ОС Archlinux.

rob111
источник
Вы компилируете против jdk или jre? убедитесь, что это jdk.
Stav Saad

Ответы:

97

Как указано здесь , JavaFX больше не включен в openjdk.

Так что проверьте, есть ли у <Java SDK root>/jre/lib/ext/jfxrt.jarвас в пути к классам Project Structure -> SDKs -> 1.x -> Classpath? Если нет, может быть, поэтому. Попробуйте добавить его и посмотрите, решит ли это вашу проблему, например, в Ubuntu, затем установите пакет openjfx с помощью sudo apt-get install openjfx.

Райан Дж.
источник
У меня нет этого файла в пути к классам и в корневой папке SDK. Я не знаю, почему в моем java, установленном из AUR, нет файла jfxrt.jar.
rob111
Я бы посоветовал обратиться к Oracle и получить подходящий дистрибутив для вашей ОС.
Ryan J
2
Я добавил файл jfxrt.jar в соответствующий каталог и добавил в SDK. Теперь моя IDE распознает javafx, НО у меня возникла ошибка при инициализации графического устройства исключения времени выполнения для: es2, sw Ошибка инициализации QuantumRenderer: не найдено подходящего конвейера java.lang.RuntimeException: java.lang.RuntimeException: Ошибка инициализации QuantumRenderer: не найдено подходящего конвейера, что мне делать нужно сейчас?
rob111
К сожалению, похоже, что у вас проблема с конфигурацией системы ... Я не уверен, что вы можете сделать, чтобы исправить это, поскольку я не знаю, насколько индивидуален ваш конкретный дистрибутив Linux.
Ryan J
24

Это должно быть вашим идеальным решением. Попробуйте и наслаждайтесь. Если какая-то команда не работает должным образом, это означает, что если вы получите какую-либо ошибку, попробуйте решить ее самостоятельно. Я дал вам главное, что вам нужно. Если ваше приложение находится в другом месте или ваша системная архитектура отличается, решите это самостоятельно. Сделать это очень просто. Просто следуйте моему данному решению.

Шаг 0:

sudo apt-get install openjdk-8-jre

Шаг 1

sudo apt-get install openjfx

Шаг 2:

sudo cp /usr/share/java/openjfx/jre/lib/ext/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Шаг 3:

sudo cp /usr/share/java/openjfx/lib/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Шаг 4:

sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64

теперь откройте новый проект или перестройте свой проект. Удачи.

Химель Рана
источник
1
OP использует Arch Linux, у которого нет APT
xdevs23
4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64плохая идея! Не делай этого!
Карл Рихтер
Карл Рихтер. Как вы разработчик. Для целей разработки вы можете это сделать. Предоставление разрешения 777 плохо для бизнеса и обычного пользователя. Поскольку вы разработчик, это не должно создавать никаких проблем. Вы хорошо знаете свою ОС. >> Также, если вы хотите, вы можете сделать тесто, изучив больше об этой проблеме. Спасибо.
Himel Rana
5
Знание о своей ОС - это ирония, когда вы просто изменили права доступа в своей системе таким образом, чтобы руткиты и вирусы могли свободно перезаписывать файл. Неважно, что вы думаете, что знаете. НИКОГДА не выполняйте chmod 777 для системных файлов. Правильные разрешения для этой папки - 644. Простой ls -lhaпокажет это.
Routhinator 01
16

Вы можете использовать тот , который поставляется с IntelliJ: <intellij>/jre64/lib/ext/jfxrt.jar.

Рок Стрниша
источник
13

Вам необходимо загрузить пакет java-openjfx из официальных репозиториев Arch Linux. (Также убедитесь, что у вас есть пакет openjdk8-openjdk). После этого откройте свой проект в Intellij и перейдите в Project-Structure -> SDK -> 1.8 -> Classpath и попробуйте удалить старый JDK, который у вас был, и щелкните каталог для нового JDK, который теперь будет содержать jfxrt.jar.

паттеркиль
источник
5
Это говорит ему, что именно ему нужно сделать, чтобы Intellij нашел пакет, который в настоящее время не находит. Как это не ответ на его вопрос?
patterkyle
2

У вас может быть более низкий уровень языка проекта, чем у JDK.

Убедитесь, что: «Структура проекта / проект / Проект-> уровень языка» ниже, чем ваш JDK. У меня была такая же проблема с JDK 9, и уровень языка по умолчанию был установлен на 6.

Я установил Project Language Level на 9, и после этого все заработало.

У вас может быть такая же проблема.

Рафаэль С
источник
2

Другой способ решения проблемы: щелкните левой кнопкой мыши папку проекта в структуре проекта слева и щелкните «Открыть настройки модуля» в списке действий. В новых окнах щелкните SDK, который находится в меню. Заголовок «Настройки платформы» Затем проверьте список «Путь к классам», если вы можете найти путь к подключаемому модулю jfxrt, если нет, щелкните символ + справа и выберите репертуар подключаемого модуля jfxrt (C: \ Program Files \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar на моем рабочем столе)

user10899964
источник
2

Пример приложения Java:

Я перекрестно отправляю свой ответ из другого вопроса здесь, поскольку он связан и, похоже, решает проблему в вопросе.

Вот мой пример проекта с OpenJDK 12, JavaFX 12 и Gradle 5.4.

  • Открывает окно JavaFX с заголовком «Hello World!»
  • Возможность создания работающего исполняемого zip-файла дистрибутива (Windows для тестирования)
  • Возможность открывать и запускать в IntelliJ без дополнительной настройки
  • Возможность запуска из командной строки

Надеюсь, кто-то сочтет проект Github полезным.

Инструкции для Scala случая :

Кроме того, ниже приведены инструкции, которые работают с плагином Gradle Scala , но не работают с Java. . Я оставляю это здесь на случай, если кто-то еще использует Scala, Gradle и JavaFX.

1) Как упоминалось в вопросе, необходимо настроить плагин JavaFX Gradle. Open JavaFX содержит подробную документацию по этому

2) Кроме того, вам понадобится JavaFX SDK для вашей платформы, где-то распакованный. ПРИМЕЧАНИЕ. Обязательно прокрутите вниз до раздела Последние выпуски, где JavaFX 12 (по какой-то причине первым идет LTS 11).

3) Затем в IntelliJ перейдите к File -> Project Structure -> Libraries, нажмите кнопку ➕ и добавьте libпапку из распакованного JavaFX SDK.

Для более подробных инструкций со снимками экрана ознакомьтесь с отличной документацией Open JavaFX для IntelliJ. Я не могу заставить работать глубокую ссылку, поэтому выберите, JavaFX and IntelliJа затем Modular from IDEв навигаторе документов. Затем прокрутите вниз до шага 3. Create a library. Если у вас возникли проблемы, попробуйте проверить и другие шаги.

Трудно сказать, точно ли это та же ситуация, что и в исходном вопросе, но она выглядела достаточно похоже, чтобы я попал сюда, поэтому я добавляю здесь свой опыт, чтобы помочь другим.

Питер Ламберг
источник
2

В IntelliJ Idea,

Убедитесь, что следующие параметры настроены правильно,

Шаг 1:

Файл -> Настройка -> Плагины -> найдите javafx и убедитесь, что он включен.

Шаг 2: структура проекта (Ctrl + Shift + Alt + s)

Настройки платформы -> SDK -> 1.8 -> Убедитесь, что путь к классам должен иметь "jre \ lib \ ext \ jfxrt.jar"

Шаг 3:

Project Settings -> Project -> Project SDK - следует выбрать 1.8

Настройки проекта -> Проект -> Уровень языка проекта - настроен как 8

Ubuntu: если в ваших SDK не найден jfxrt.jar, установите sudo apt-get install openjfx

Камень
источник
0

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

1) переходим в Файл -> Структура проекта ----> Глобальные библиотеки 2) ищем jfxrt.jar, включенный по умолчанию в jdk1.8.0_241 \ lib (после его установки) 3) нажмите + в левом верхнем углу, чтобы добавить новая глобальная библиотека, и я указал путь к моему jdk1.8.0_241 Ex: (C: \ Program Files \ Java \ jdk1.8.0_241).

Я надеюсь, что это поможет вам

Джак айм
источник