次のコマンドで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は手動で追加するのではなく、すべてのモジュールを見つけると思いました。
以下を実行する場合:
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
にも当てはまります。