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

我正在尝试使用以下命令运行jdeps:

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

My 同时依赖于应用程序模块和自动模块。我把所有的依赖项放在“模块”文件夹中,但我得到了一个错误:com.demo.market.jar

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,则在相关模块路径上找到的所有可观察模块都将添加到根集。全模块路径在编译时和运行时都有效。这是由构建工具(如 Maven)提供的,这些工具已经确保需要模块路径上的所有模块。这也是向根集添加自动模块的便捷方式。


附注,就要执行的命令而言:-

  • 此外,问题中共享的输出在理想情况下是正确的。jdeps-verbose:class

答案 2

推荐