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
モジュールの依存関係の他、JDKの内部API (参照される場合)のパッケージ名もリストします。
--list—reduced-deps
--list-deps
と同じですが、モジュール・グラフからの含意された読取りエッジをリストしません。モジュールM1がM2を読み取り、M2はM3上で推移的である必要がある場合、M3を読み取るM1は含意されており、グラフには表示されません。
--print-module-deps
--list-reduced-deps
と同じで、モジュールの依存関係のカンマ区切りリストを出力します。出力をjlink --add-modules
で使用すると、それらのモジュールとその推移的な依存性を含むカスタム・イメージを作成できます。
依存関係をフィルタするオプション
-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
または-filterregex
指定されたパターンに一致する依存関係をフィルタします。複数回指定した場合は、最後のものが選択されます。
-filter:package
同じパッケージ内の依存関係をフィルタします。これはデフォルトです。
-filter:archive
同じアーカイブ内の依存関係をフィルタします。
-filter:module
同じモジュール内の依存関係をフィルタします。
-filter:none
-filter:package
および-filter:archive
のフィルタリングは行われません。-filter
オプションで指定されたフィルタリングが引き続き適用されます。
分析対象のクラスをフィルタするオプション
-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およびOS X:
$ 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