Zim*_*ger 11 java java-platform-module-system java-9 jdeps
我正在尝试使用以下命令运行jdeps:
jdeps --module-path modules --generate-module-info out com.demo.market.jar
Run Code Online (Sandbox Code Playgroud)
我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
Run Code Online (Sandbox Code Playgroud)
但是当我添加--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
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我认为jdeps会找到所有模块而不是手动添加它们.
执行以下操作时:
jdeps --module-path modules --generate-module-info out com.demo.market.jar
Run Code Online (Sandbox Code Playgroud)
从目录中解析的模块是可观察的模块,在您的情况下,它们无法进入根模块集.
在问题的其他部分 -
jdeps --module-path modules --add-modules com.demo.client,com.demo.product,com.demo.logistic --generate-module-info . com.demo.market.jar
Run Code Online (Sandbox Code Playgroud)
另一方面,明确添加它们可确保模块存在于根模块集中.
作为替代方案(从JEP261#Module System,您可以尝试使用该命令
jdeps --module-path modules --add-modules=ALL-MODULE-PATH --generate-module-info out com.demo.market.jar
Run Code Online (Sandbox Code Playgroud)
作为最后的特殊情况,在运行时和链接时,如果是ALL-MODULE-PATH,那么在相关模块路径上找到的所有可观察模块都将添加到根集.ALL-MODULE-PATH在编译时和运行时都有效.这是为Maven等构建工具提供的,它已经确保需要模块路径上的所有模块.它也是将自动模块添加到根集的便捷方式.
关于要执行的命令,请注意: -
jdeps问题中共享的输出-verbose:class理想地成立.
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |