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


81

Я спробував створити додаток JavaFX в IDE IntelliJ Idea, але я отримав помилку компіляції, яка сказала:

java: пакет javafx.application не існує.

Я змінив Project SDK та рівень мови проекту на Java 8, перезавантажив проект, але це не допомогло. Потім я перевірив, чи в налаштуваннях увімкнено плагін JavaFX.

Пошук у Google та StackOverflow не дав мені більше уявлень про те, що не так. Дякую за будь-яку допомогу заздалегідь.

PS Я використовую IntelliJ Idea 14.0 з java8.1.0_25 в ОС archlinux.


Ви збираєтеся проти jdk чи jre? переконайтеся, що це jdk.
Став Саад

Відповіді:


97

Як зазначено тут , JavaFX більше не входить до складу openjdk.

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


У мене немає цього файлу в Classpath і в кореневій папці 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 - це погано для бізнесу та загального користувача. Оскільки ви розробник, це не повинно створювати жодних проблем. Ви добре знаєте про свою ОС. >> Крім того, якщо ви хочете, ви можете зробити тісто, вивчивши більше цієї проблеми. Дякую.
Хімель Рана,

5
Знання про вашу ОС - це іронічне твердження, коли ви щойно змінили дозволи у своїй системі таким чином, щоб руткіти та віруси могли вільно переписувати файл. Не має значення, що ви думаєте, що знаєте. НІКОЛИ не робіть chmod 777 на системні файли. Правильні дозволи для цієї папки - 644. Просте ls -lhaце покаже.
Рутінатор

16

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


13

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


5
Це говорить йому, що саме йому потрібно зробити, щоб Intellij знайшов пакет, якого наразі не знаходить. Як це не відповісти на його запитання?
patterkyle

2

Можливо, у вас нижчий рівень мови проекту, ніж ваш JDK.

Перевірте, якщо: "Структура Projeckt / project / Project-> рівень мови" нижчий за ваш JDK. У мене була та сама проблема з JDK 9, і рівень мови за замовчуванням був встановлений на 6.

Я встановив рівень мови проекту на 9, і після цього все працювало нормально.

Можливо, у вас така сама проблема.


2

Інший спосіб вирішення проблеми: Клацніть лівою кнопкою миші на папці проекту в структурі проекту ліворуч і натисніть на "відкрити налаштування модуля" у списку дій. У новому вікні натисніть SDK, що знаходиться в меню title "Платформи" "Потім перевірте в списку" Classpath ", чи можете ви знайти шлях до плагіна jfxrt, якщо ні, натисніть на символ + праворуч і виберіть репертуар плагіна jfxrt (C: \ Program Files \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar на моєму робочому столі)


2

Зразок програми Java:

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

Ось мій приклад проекту з OpenJDK 12, JavaFX 12 та Gradle 5.4

  • Відкриває вікно JavaFX із заголовком "Привіт Світ!"
  • Можливість створити робочий 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, натискаєте кнопку and і додаєте libпапку з розпакованого JavaFX SDK.

Щоб отримати довші інструкції зі знімками екрана, перегляньте чудові відкриті документи JavaFX для IntelliJ. Я не можу змусити працювати пряме посилання, тому виберіть, JavaFX and IntelliJа потім перейдіть Modular from IDEіз навігації до документів. Потім прокрутіть вниз до кроку 3. Create a library. Спробуйте також перевірити інші кроки, якщо у вас виникли проблеми.

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


2

В ідеї IntelliJ,

Переконайтесь, що наступні речі налаштовані належним чином,

Крок 1:

Файл -> Налаштування -> Плагіни -> пошук javafx і переконайтеся, що його увімкнено.

Крок 2: Структура проекту (Ctrl + Shift + Alt + s)

Налаштування платформи -> SDK -> 1.8 -> Переконайтеся, що у Classpath має бути "jre \ lib \ ext \ jfxrt.jar"

Крок 3:

Налаштування проекту -> Проект -> Проект SDK - слід вибрати 1.8

Параметри проекту -> Проект -> Рівень мови проекту - налаштований як 8

Ubuntu: якщо jfxrt.jar не знайдено у ваших SDK, то встановіть sudo apt-get install openjfx


0

У мене була та ж проблема , у моєму випадку я її вирішив :

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

Сподіваюся, це вам допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.