IntelliJ не может распознать JavaFX 11 с OpenJDK 11 - PullRequest
0 голосов
/ 23 сентября 2018

У меня проблемы с тем, чтобы IntellJ распознал пакеты JavaFX.В новом проекте JavaFX, в OpenJDK 11, при попытке создать проект IntelliJ не может распознать пакеты JavaFX.

Я импортировал openjfx:javafx-base-11 из репозитория Maven.

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

У кого-то есть идеи?

pic 1

pic 2

pic 3

Редактировать:

Ошибка:

enter image description here

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Проблема в том, что Java FX больше не является частью JDK 11. Следующее решение работает с использованием IntelliJ (не пробовал его с NetBeans):

  1. Добавить глобальную библиотеку JavaFX какЗависимость:

    Настройки -> Структура проекта -> Модуль.В модуле перейдите на вкладку «Зависимости», нажмите знак «+» -> Библиотека -> Java-> выберите JavaFX из списка и нажмите «Добавить выбранное», затем «Применить настройки».

  2. Щелкните правой кнопкой мыши исходный файл (src) в вашем проекте JavaFX и создайте новый module-info.java file .Внутри файла напишите следующий код:

           module YourProjectName    
           { requires javafx.fxml;
             requires javafx.controls;
             requires javafx.graphics;
              opens sample;}
    

Эти 2 шага решат все ваши проблемы с JavaFX, уверяю вас.

Ссылка: есть You TubeУчебник, сделанный каналом Learn Programming, объяснит все детали выше всего за 5 минут.Я также рекомендую посмотреть его, чтобы решить вашу проблему: https://www.youtube.com/watch?v=WtOgoomDewo

0 голосов
/ 26 апреля 2019

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

Это работает и для получения JavaFx на Jdk 11, 12 и на OpenJdk12!

  • Видео показывает загрузку JavaFx Sdk
  • Как установить ее в качестве глобальной библиотеки
  • Установить module-info.java (я предпочитаю нижнюю)

module thisIsTheNameOfYourProject {
    requires javafx.fxml;
    requires javafx.controls;
    requires javafx.graphics;
    opens sample;
}

Все это заняло у меня всего 5 минут !!!

0 голосов
/ 23 сентября 2018

Как уже упоминалось в комментариях, Starting Guide - это то место, с которого нужно начинать с Java 11 и JavaFX 11.

Ключ к работе, как вы делали до Java 11, заключается в том, чтобы понять, что:

  • JavaFX 11 больше не является частью JDK
  • Вы можете получить его в различных вариантах, либо в виде SDK, либо в виде обычных зависимостей (maven / gradle).
  • Вам нужно будет включить его в путь к модулю вашего проекта, даже если ваш проект не является модульным.

JavaFX project

Если высоздать обычный проект JavaFX по умолчанию в IntelliJ (без Maven или Gradle). Я бы посоветовал вам загрузить SDK с здесь .Обратите внимание, что также существуют jmod, но для немодульного проекта предпочтителен SDK.

Это простые шаги для запуска проекта по умолчанию:

  1. Создание проекта JavaFX
  2. Установите JDK 11 (укажите на локальную версию Java 11)
  3. Добавьте JavaFX 11 SDK в качестве библиотеки.URL может быть что-то вроде /Users/<user>/Downloads/javafx-sdk-11/lib/.После этого вы заметите, что классы JavaFX теперь распознаются в редакторе.

JavaFX 11 Project

Перед запуском проекта по умолчанию вам просто нужно добавить их к параметрам виртуальной машины:

--module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

Выполнить

Maven

Если вы используете Maven для создания своего проекта, выполните следующие действия:

  1. Создайте проект Maven с использованием архетипа JavaFX
  2. Установить JDK 11 (указать на локальную версию Java 11)
  3. Добавить зависимости JavaFX 11.

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>
    

Как только вы это сделаете, вы заметите, что классы JavaFX теперь распознаются в редакторе.

JavaFX 11 Maven project

Вы заметите, что Maven управляет необходимыми зависимостями для вас: он добавит javafx.base и javafx.graphics для javafx.controls, но самое главное, он добавит необходимый классификатор на основе вашегоПлатформа.В моем случае Mac.

Вот почему ваши jar org.openjfx:javafx-controls:11 являются пустыми , потому что есть три возможных классификатора (платформы Windows, Linux и Mac), которые содержат все классы инативная реализация.

Если вы все еще хотите пойти в репозиторий .m2 и взять оттуда зависимости вручную, убедитесь, что вы выбрали правильную (например, .m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar)

Замените стандартные модули maven на здесь .

Запустите mvn compile exec:java, и оно должно работать.

Аналогично работает и для проектов Gradle, как подробно описано здесь .

РЕДАКТИРОВАТЬ

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

...