生成模块信息jdeps时缺少依赖项

时间:2017-11-26 20:07:22

标签: java java-9 jigsaw 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 个答案:

答案 0 :(得分:6)

执行以下操作时:

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#Module System ,您可以尝试使用命令

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