Безымянные модули не могут быть прочитаны

У меня действительно неприятная проблема, которую я не понимаю...

  1. У нас есть полный набор утилит-библиотек, написанных с использованием jdk8, и мы не имеем отношения к Jigsaw, поэтому мы также не установили Automatic-Module-Name в файле META-INF.

  2. Теперь нам нужно перенести продукт на java11, который использует эти библиотеки утилит.

  3. Я создал module-info.java и ввел все необходимые модули, но есть некоторые проблемы с утилитами-библиотеками.
  4. Некоторые из утилитных библиотек загружаются как неназванные модули, и их можно добавлять как необходимые модули. Но для некоторых других этих утилитарных библиотек их невозможно добавить, потому что они не получают имя модуля на основе своего jar-файла.

Из моей IDE я получаю следующую ошибку:

Пакет 'x' объявлен в неназванном модуле, но модуль 'y' не читает его.

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

Есть идеи, чтобы я мог понять эту проблему?

С уважением

0 ответов

Решением этой конкретной проблемы стала моя IDE. IntelliJ не поддерживает чтение "безымянных модулей" или "автоматических модулей" из импортированных "проектов" в среде IDE. Я уже начал сообщать об ошибках в jetbrains.

Я использую AdoptOpenJDK jdk-11.0.3.7-hotspot и получаю следующее сообщение об исключении во время выполнения

class A (in module A) cannot access class B (in unnamed module @0x12345678) because module A does not read unnamed module @0x12345678

и решил это с помощью аргумента --add-reads vm

--add-reads iamdsim.heat.adapter=ALL-UNNAMED

Я где-то читал, что по умолчанию безымянный модуль "читают" только автоматические модули. Но я не смог найти его в пакете java.lang.module.

Изменить: это задокументировано в Состояние модульной системы

jar-файлы с именами, для которых невозможно получить автоматическое имя модуля, всегда являются проблемой. Это происходит с числами или зарезервированными словами, такими как "интерфейс" в имени (например, "db-interface-1.0.0.jar").

Другие вопросы по тегам