Eclipse Oxygen: как указать зависимости модуля
Я пытаюсь ознакомиться с поддержкой Eclipse для модулей Java 9. Я использую Eclipse Oxygen с пакетом поддержки Java 9 с рынка и последней версией JDK 9 u180.
Проблема касается модульных зависимостей и того, как сообщить Eclipse о них.
Насколько я понимаю, в Eclipse модуль JPMS соответствует проекту Eclipse. Я создал три проекта или модули и добавил необходимые файлы информации о модуле:
module com.effjava.app {
requires com.effjava.support;
}
module com.effjava.support {
exports com.effjava.support.hlp;
exports com.effjava.support.test;
exports com.effjava.support.user;
requires transitive com.effjava.util;
}
module com.effjava.util {
exports com.effjava.util.cbk;
exports com.effjava.util.reg;
}
Это простая нисходящая цепочка зависимостей. Дескрипторы модуля верны; Мне уже удалось настроить те же модули в IntelliJ.
Моя проблема: как мне сказать Eclipse, что верхние модули зависят от нижних, например, что средний модуль com.effjava.support
зависит от нижнего модуля com.effjava.util
?
Я определил зависимость в файле module-info (через requires transitive
) и Eclipse принимает директиву без жалоб. Тем не менее я вижу сообщение об ошибке при компиляции среднего модуля com.effjava.support
, Сообщение об ошибке говорит, что публичный тип из пакета com.effjava.util.cbk
не виден, несмотря на то, что экспортируется модулем com.effjava.util
и требуется module com.effjava.support
,
снимок экрана со структурой проекта и сообщением об ошибке компилятора
Чтобы указать зависимость, я экспортировал содержимое нижнего модуля com.effjava.util
в файл jar, включая модуль-info.class. Следовательно, это модульный файл JAR.
Затем я импортировал модульный файл JAR в com.effjava.support
модуль и добавил импортированный модульный файл JAR к пути сборки. Но безрезультатно.
Я попробовал это без импорта, просто добавив модульную флягу как внешнюю библиотеку. Это тоже не сработало.
Вопрос в том, как правильно указать зависимости модуля в Eclipse.