jdeps
jdepsコマンドは、Javaクラスの依存関係アナライザを起動する場合に使用します。
形式
jdeps [options] path ...
説明
jdepsコマンドは、Javaクラス・ファイルの依存関係をパッケージ・レベルまたはクラス・レベルで表示します。入力クラスには、.classファイル、ディレクトリ、JARファイルへのパス名、またはすべてのクラス・ファイルが分析されるクラスの完全修飾名を指定できます。出力は、オプションによって決まります。デフォルトでは、jdepsコマンドはシステム出力に依存関係を書き込みます。このコマンドは、依存関係をDOT言語で生成できます(-dotoutputオプションを参照)。
有効なオプション
-
-dotoutput dirまたは--dot-output dir -
DOTファイルの出力先ディレクトリを指定します。このオプションを指定した場合、
jdepsコマンドは、分析対象のアーカイブごとに、依存関係をリストするarchive-file-name.dotという名前の.dotファイルを1つを生成し、アーカイブ間の依存関係をリストするsummary.dotという名前のサマリー・ファイルも生成します。 -
-sまたは-summary -
依存関係のサマリーのみを出力します。
-
-vまたは-verbose -
クラス・レベルの依存関係をすべて出力します。これは次の記述と同等です。
-verbose:class -filter:none -
-verbose:package -
デフォルトでは同じパッケージ内の依存関係を除く、パッケージ・レベルの依存関係を出力します。
-
-verbose:class -
デフォルトでは同じアーカイブ内の依存関係を除く、クラス・レベルの依存関係を出力します。
-
-apionlyまたは--api-only -
分析をAPI、たとえば、パブリック・クラスの
publicおよびprotectedメンバーの署名からの依存関係(フィールドの型、メソッド・パラメータの型、戻り値の型、チェック例外の型を含む)に制限します。 -
-jdkinternalsまたは--jdk-internals -
JDKの内部APIでクラス・レベルの依存関係を検索します。デフォルトでは、
-includeオプションを指定しないかぎり、このオプションは-classpathオプションおよび入力ファイルに指定されたすべてのクラスを分析します。このオプションと-p、-eおよび-sオプションを一緒に使用することはできません。警告: JDKの内部APIにはアクセスできません。
-
-cp path、-classpath pathまたは--class-path path -
クラス・ファイルの検索場所を指定します。
-
--module-path module-path -
モジュール・パスを指定します。
-
--upgrade-module-path module-path -
アップグレード・モジュール・パスを指定します。
-
--system java-home -
代替システム・モジュール・パスを指定します。
-
--add-modules module-name [, module-name...] -
分析のルート・セットにモジュールを追加します。
-
--multi-release version -
マルチリリースJARファイルを処理するときのバージョンを指定します。
versionは9以上の整数またはbaseにする必要があります。 -
—qまたは-quite -
–generate-module-info出力から欠落している依存関係を表示しません。 -
-versionまたは--version -
バージョン情報を出力します。
モジュール依存関係分析オプション
-
–m module-nameまたは--module module-name -
分析対象のルート・モジュールを指定します。
-
--generate-module-info dir -
指定されたディレクトリで
module-info.javaを生成します。指定されたJARファイルが分析されます。このオプションは、--dot-outputまたは--class-pathオプションと一緒に使用できません。オープン・モジュールには、--generate-open-moduleオプションを使用します。 -
--generate-open-module dir -
指定されたディレクトリで指定のJARファイルの
module-info.javaをオープン・モジュールとして生成します。このオプションは、--dot-outputまたは--class-pathオプションと一緒に使用できません。 -
--check module-name [, module-name...] -
指定されたモジュールの依存関係を分析します。モジュール・ディスクリプタ、分析結果のモジュールの依存関係および遷移削減後のグラフを出力します。また、未使用の修飾されたエクスポートも特定します。
-
--list-deps -
モジュールの依存関係をリストします。内部APIパッケージも出力します(参照される場合)。このオプションは、クラス・パスとモジュール・パスのライブラリを推移的に分析します(参照される場合)。非推移的な依存関係の分析には、
--no-recursiveオプションを使用してください。 -
--list—reduced-deps -
--list-depsと同じですが、モジュール・グラフからの含意された読取りエッジをリストしません。モジュールM1がM2を読み取り、M2はM3上で推移的である必要がある場合、M3を読み取るM1は含意されており、グラフには表示されません。 -
--print-module-deps -
--list-reduced-depsと同じで、モジュールの依存関係のカンマ区切りリストを出力します。この出力をjlink --add-modulesで使用すると、それらのモジュールとその推移的な依存関係を含むカスタム・イメージを作成できます。 -
--ignore-missing-deps - 欠落している依存関係を無視します。
依存関係をフィルタするオプション
-
-p pkg name、-package pkg nameまたは--package pkg name -
指定されたパッケージ名に一致する依存関係を検索します。このオプションは、様々なパッケージに対して複数回指定できます。
-pオプションと-eオプションは、相互に排他的です。 -
-e regex、-regex regexまたは--regex regex -
指定されたパターンに一致する依存関係を検索します。
-pオプションと-eオプションは、相互に排他的です。 -
--require module-name -
指定されたモジュール名(複数回指定されることもあり)に一致する依存関係を検索します。
--package、--regexおよび--requireオプションは相互に排他的です。 -
-f regexまたは-filter regex -
指定されたパターンに一致する依存関係をフィルタします。複数回指定した場合は、最後のものが選択されます。
-
-filter:package -
同じパッケージ内の依存関係をフィルタします。これはデフォルトです。
-
-filter:archive -
同じアーカイブ内の依存関係をフィルタします。
-
-filter:module -
同じモジュール内の依存関係をフィルタします。
-
-filter:none -
-filter:packageおよび-filter:archiveのフィルタリングは行われません。-filterオプションで指定されたフィルタリングが引き続き適用されます。 -
--missing-deps - 欠落している依存関係を検出します。このオプションは、-p、-eおよび-sの各オプションと一緒には使用できません。
-
--recursive - すべてのランタイム依存関係を再帰的にトラバースします。
-Rオプションは-filter:noneを意味します。-p、-eまたは-fオプションを指定した場合、一致する依存関係のみが分析されます。 -
--no-recursive - 依存関係を再帰的にトラバースしません。
分析対象のクラスをフィルタするオプション
-
-include regex -
パターンに一致するクラスに分析を制限します。このオプションを使用すると、分析対象クラスのリストがフィルタリングされます。パターンを依存関係に適用する
-pおよび-eとともに使用できます。 -
-Pまたは-profile -
パッケージを含むプロファイルを表示します。
-
-Rまたは-recursive -
すべてのランタイム依存関係を再帰的にトラバースします。
-Rオプションは-filter:noneを意味します。-p、-eまたは-fオプションを指定した場合、一致する依存関係のみが分析されます。 -
-Iまたは-inverse -
他の指定されたオプションごとに依存関係を分析し、一致するノードに直接および間接的に依存するアーティファクトをすべて検索します。これは、コンパイル時の表示分析および出力依存関係サマリーの逆に相当します。このオプションは、
--require、--packageまたは--regexオプションと一緒に使用する必要があります。 -
--compile-time -
-Rオプションのコンパイル時の表示など、推移的な依存関係のコンパイル時の表示を分析します。他の指定されたオプションごとに依存関係を分析します。ディレクトリ、JARファイルまたはモジュールから依存関係が検出された場合、その含んでいるアーカイブ内のクラスがすべて分析されます。
依存関係の分析例
次の例では、Notepad.jarファイルの依存関係の分析を示します。
Oracle Solaris、LinuxおよびmacOS:
$ jdeps demo/jfc/Notepad/Notepad.jar
Notepad.jar -> java.base
Notepad.jar -> java.desktop
Notepad.jar -> java.logging
<unnamed> (Notepad.jar)
-> java.awt
-> java.awt.event
-> java.beans
-> java.io
-> java.lang
-> java.net
-> java.util
-> java.util.logging
-> javax.swing
-> javax.swing.border
-> javax.swing.event
-> javax.swing.text
-> javax.swing.tree
-> javax.swing.undo
Windows:
C:\Java\jdk1.9.0>jdeps demo\jfc\Notepad\Notepad.jar
Notepad.jar -> java.base
Notepad.jar -> java.desktop
Notepad.jar -> java.logging
<unnamed> (Notepad.jar)
-> java.awt
-> java.awt.event
-> java.beans
-> java.io
-> java.lang
-> java.net
-> java.util
-> java.util.logging
-> javax.swing
-> javax.swing.border
-> javax.swing.event
-> javax.swing.text
-> javax.swing.tree
-> javax.swing.undo
--inverseオプションの使用例
$ jdeps --inverse --require java.xml.bind
Inverse transitive dependences on [java.xml.bind]
java.xml.bind <- java.se.ee
java.xml.bind <- jdk.xml.ws
java.xml.bind <- java.xml.ws <- java.se.ee
java.xml.bind <- java.xml.ws <- jdk.xml.ws
java.xml.bind <- jdk.xml.bind <- jdk.xml.ws