Модульный проект растет InvalidModuleDescriptorException с jOpenDocument
Я разрабатываю модульный проект java с java/javafx 12 в Eclipse 2019-06, используя смешанный модульный и немодульный подход. Не удается запустить программу из-за исключений во время выполнения.
Мне нужно использовать смешанный модульный и немодульный подход, потому что программе требуются внешние библиотеки. Большинство из них доступны в виде модулей, но jOpenDocument не предоставляется разработчиками в виде модуля.
Я не получаю жалоб от Eclipse, за исключением "Имя автоматического модуля jOpenDocument нестабильно", что не должно быть проблемой.
При запуске программы возникает следующее исключение:
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for C:\Users\ct\eclipse-workspace-2019-06\DMModule2\lib\jOpenDocument-1.4rc2.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: JDOMAbout$Info.class found in top-level directory (unnamed package not allowed in module)
У меня есть все внешние банки в пути к модулю, файл информации о модуле показан здесь ниже.
Проект может работать без проблем при использовании немодульного подхода, но я бы хотел остаться с модулями. Я нашел эти две ссылки для одной и той же проблемы
Смешанная модульная и немодульная разработка в Eclipse с использованием Java 11
Что мне нужно для сборки проекта JDK 9 с немодульными зависимостями с использованием Maven
но решить не помогло.
Исходный код для jOpenDocument доступен по https://jopendocument.org/download/jOpenDocument-src-1.4rc2.zip, поэтому обновление jar-файла в модуль путем добавления файла информации о модуле возможно. Я тоже пробовал это, но безуспешно, думаю, если кто-нибудь сможет это сделать, это будет полезно для сообщества.
module dmmodule2 {
exports dmmodule;
exports gui;
// sql
requires transitive java.sql;
// Json
requires transitive org.glassfish.java.json;
// jOpenDocument
requires transitive jOpenDocument;
// JavaFX;
requires javafx.fxml;
requires transitive javafx.graphics;
requires transitive javafx.controls;
opens dmmodule to javafx.fxml;
opens gui to javafx.fxml;
}
Кто-нибудь так любезен, чтобы подсказать, как заставить мой модульный проект работать, используя доступную двоичную банку jOpenDocument или преобразовав ее в модуль из исходного кода?
1 ответ
Это проблема, связанная с JDOM, мы увидим, что мы можем сделать в следующей версии jOpenDocument.