Модульный проект растет 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)

У меня есть все внешние jar-файлы в пути к модулю, файл информации о модуле показан здесь ниже.

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

Смешанная модульная и немодульная разработка в 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 или преобразовав ее в модуль из исходного кода?


person CT95    schedule 09.10.2019    source источник
comment
JDOMAbout$Info.class переместите этот класс в именованный пакет (вместо того, чтобы находиться в папке src напрямую), если вы можете редактировать источник.   -  person Naman    schedule 09.10.2019
comment
Привет, Наман, спасибо за подсказку. Думаю, я понял вашу точку зрения: двоичная банка имеет три класса в базовой папке, а не в пакете: JDOMAbout$Info.class, JDOMAbout$Author.class, JDOMAbout.class . На данный момент мне очень сложно перестроить пакет в Eclipse, он показывает ошибки при загрузке как есть, и сценарий ant не работает.   -  person CT95    schedule 09.10.2019


Ответы (1)


Это проблема, связанная с JDOM, мы увидим, что мы можем сделать в следующей версии jOpenDocument.

person BluEOS    schedule 09.10.2019