У меня проблема с затмением при экспорте JAR-файла проекта модуля B, который сам включает в себя другой модуль A, содержащийся в файле JAR. В этом случае, когда я пытаюсь импортировать экспортированный модуль, я получаю исключение java.lang.module.FindException.
В моем примере проект A является модульным проектом только с одним классом AClass:
package a;
public class AClass {
public static void main(String[] args) {
System.out.println("From module A");
}
}
Информация о модуле проекта A:
module modulea {
exports a;
}
Проект B также является модульным проектом, включающим экспорт в виде файла Jar проекта A. Он содержит только один класс BClass:
package b;
import a.AClass;
public class BClass {
public static void main(String[] args) {
AClass.main(args);
}
}
Информация о модуле проекта B:
module moduleb {
requires transitive modulea;
exports b;
}
Когда я запускаю проект B, я получаю ожидаемый результат: Из модуля A
Проект Cтакже является модульным проектом, включающим экспорт в виде Jar-файла проекта B. Проект B экспортируется, как показано ниже:
и содержимоеФайл jar показан ниже:
Project C содержит только один класс CClass:
package c;
public class CClass {
public static void main(String[] args) {
System.out.println("ok");
}
}
Информация о модулепроекта C:
module modulec {
requires moduleb;
}
Когда я запускаю проект C, я получаю сообщение об ошибке:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module modulea not found, required by moduleb
Я думаю, что проблемаЭто происходит из того, что проект C не находит модуль A, требуемый для модуля B, несмотря на то, что модуль A содержится в папке lib фляги проекта B. Но я не знаю, как решить проблему такого типа. Вопрос в том, как экспортировать в jar-файл модульный проект B, содержащий еще один модуль A с Eclipse?
Eclipse:
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200
JVM:
openjdk version "13-BellSoft" 2019-09-17
OpenJDK Runtime Environment (build 13-BellSoft+33)
OpenJDK 64-Bit Server VM (build 13-BellSoft+33, mixed mode, sharing)