javafx.base читает пакет javafx.beans - PullRequest
0 голосов
/ 09 ноября 2018

Я использую OpenJDK 11 и OpenJFX 11.0.1 с Gradle в IntelliJ IDEA для моего проекта. Когда я использую модуль javafx.base, IntelliJ IDEA сообщает об ошибке в строке 1 (объявление модуля проекта), говоря, что я не включаю модуль javafx.beans (beans - это пакет в модуле javafx.base) в требованиях к моему модулю. Задача Gradle jar выполняется без каких-либо ошибок или предупреждений, поэтому эта ошибка, вероятно, связана с IntelliJ IDEA.

Сообщение об ошибке: «Модуль« hr.caellian.lunar »считывает пакет« javafx.beans »для обоих« javafx.base »и« javafx.base »» Если я уберу требование javafx.base, javafx.base из вышеприведенной ошибки будет заменено следующим модулем javafx.

Я также получаю предупреждения в строках требований к модулю javafx: «Неоднозначная ссылка на модуль: javafx.base» для «javafx.base» и т. Д. Для каждого модуля javafx.

Вот мой файл module-info.java:

module hr.caellian.lunar {
    requires java.base;
    requires kotlin.stdlib;

    requires javafx.base;
    requires javafx.controls;
    requires javafx.fxml;
    opens hr.caellian.lunar.gui to javafx.graphics;

    requires org.kordamp.ikonli.javafx;
    requires org.kordamp.iconli.core;

    requires com.fasterxml.jackson.core;
    requires com.fasterxml.jackson.databind;
    requires com.fasterxml.jackson.dataformat.yaml;

    requires arglib;
    requires org.apache.bcel;
}

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

Я перезагружал модули JavaFX, чтобы посмотреть, пропустил ли я что-то, но не сделал этого - модуль javafx.beans не существует.

'java --list-modules' не перечисляет никакие модули javafx, если это проблема, хотя я понял, что он должен перечислять только модули jdk, и OpenJFX больше не включается в OpenJDK.

Я установил OpenJFX SDK в папку JDK (файлы lib, скопированные в папку lib, то же самое для легальных), добавил файлы javfx jar-зависимостей из папки lib JDK11 в IDEA вручную. Я также добавил все файлы jmod в папку jmod на JDK11.

Возможно, модули JavaFX имеют плохие файлы module-info.java или что-то в этом роде? Это ошибка IntelliJ IDEA?

1 Ответ

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

удалось исправить проблему благодаря комментарию от @ nullpointer.

Проблема заключалась в том, что я скопировал файлы из JavaFX SDK и в мой путь к классам JDK 11, и в папку lib проекта.

Если вы видите эту ошибку с теми же предупреждениями, это означает, что у вас, вероятно, есть дубликаты jar модулей (возможно, в будущих модулях напрямую) в вашем JDK Classpath проекта IntelliJ и в вашем build.gradle (или папке lib).

Как исправить: Я удалил jar-файлы OpenJFX SDK из JDK11 Classpath в IntelliJ IDEA в структуре проекта. Удаляя файлы JFX SDK из папки lib моего проекта, я их читал. Gradle добавляет каждый jar в папку lib с:

implementation fileTree(dir: 'lib', include: '**/*.jar')

Кроме того, не устанавливайте JavaFX непосредственно в папку JDK. Обновление будет невозможно без сохранения ненужных файлов, вы никогда не сможете найти все файлы JFX для удаления, если вы захотите их удалить, JFX src.zip заменяет JDK src.zip в папке lib. Они должны быть отдельными.

...