Отсутствие зависимостей при генерации-module-info-jdeps

Я пытаюсь запустить jdeps с помощью следующей команды:

jdeps --module-path modules --generate-module-info out com.demo.market.jar

мой com.demo.market.jar зависит как от прикладных модулей, так и от автоматических модулей. Я поместил все зависимости в папку 'modules', но получил ошибку:

Error: missing dependencies
com.demo.market.platform.MarketPlace ->  com.demo.client.wholesale.Client  not found
com.demo.market.platform.MarketPlace ->  com.demo.product.api.Product      not found
com.demo.market.platform.MarketPlace ->  com.demo.product.laptop.Laptop    not found
com.demo.market.collector.ProductsCollector -> com.demo.logistic.DeliveryService not found
com.demo.market.collector.ProductsCollector -> com.demo.product.api.Product      not found

Но когда я добавляю --add-modules Работает нормально.

jdeps --module-path modules --add-modules com.demo.client,com.demo.product,com.demo.logistic --generate-module-info out com.demo.market.jar

Я делаю что-то неправильно? Я предполагал, что jdeps найдет все модули, а не добавит их вручную.

1 ответ

Решение

Когда вы выполните следующее:

jdeps --module-path modules --generate-module-info out com.demo.market.jar

Модули, которые разрешаются из каталога, являются наблюдаемыми модулями, которые в вашем случае не могут сделать это для набора корневых модулей.


По другой части вопроса -

jdeps --module-path modules --add-modules com.demo.client,com.demo.product,com.demo.logistic --generate-module-info . com.demo.market.jar

С другой стороны, добавление их явно гарантирует, что модули присутствуют в наборе корневых модулей.


В качестве альтернативы (из Системы модулей JEP261# вы можете попробовать использовать команду

jdeps --module-path modules --add-modules=ALL-MODULE-PATH --generate-module-info out com.demo.market.jar 

В качестве последнего особого случая, как во время выполнения, так и во время соединения, если установлено значение ALL-MODULE-PATH, то все наблюдаемые модули, найденные в соответствующих путях модулей, добавляются в корневой набор. ALL-MODULE-PATH действителен как во время компиляции, так и во время выполнения. Это предусмотрено для использования инструментами сборки, такими как Maven, которые уже гарантируют, что все модули на пути к модулю необходимы. Это также удобное средство для добавления автоматических модулей в корневой набор.


Обратите внимание, что команды должны быть выполнены:

  • Так же jdeps общий вывод в вопросе справедлив с -verbose:class в идеале.
Другие вопросы по тегам