jdeps(1) 基本ツール jdeps(1)

名前

jdeps - Javaクラス依存性アナライザ。

概要

jdeps [options] classes ...

options

コマンド行オプション。オプションを参照してください。

classes

分析するクラスの名前。クラス・パスで検出できるクラスを、ファイル名、ディレクトリまたはJARファイルで指定できます。

説明

jdepsコマンドは、Javaクラス・ファイルのパッケージレベルまたはクラスレベルの依存性を示します。入力クラスには、.classファイルのパス名、ディレクトリ、JARファイル、またはすべてのクラス・ファイルを分析するための完全修飾クラス名を指定できます。オプションにより出力が決定します。デフォルトでは、jdepsはシステム出力に依存関係を出力します。DOT言語で依存関係を生成できます(-dotoutputオプションを参照)。

オプション

-dotoutput <dir>

DOTファイル出力の宛先ディレクトリ。指定した場合、jdepsは<archive-file-name>.dotという名前の分析済アーカイブごとに依存関係をリストする1つのdotファイルを生成し、アーカイブ間の依存関係をリストするsummary.dotという名前のサマリー・ファイルも生成します。

-s
-summary

依存関係のサマリーのみを出力します。

-v
-verbose

すべてのクラスレベルの依存関係を出力します。

-verbose:package

同じアーカイブ内の依存関係を除き、パッケージレベルの依存関係を出力します。

-verbose:class

同じアーカイブ内の依存関係を除き、クラスレベルの依存関係を出力します。

-cp <path>
-classpath <path>

クラス・ファイルの検索場所を指定します。

クラス・パスの設定 も参照してください。

-p <pkg name>
-package <pkg name>

指定したパッケージの依存関係を検出します。異なるパッケージに対してこのオプションを複数回指定できます。-pオプションと-eオプションを同時に指定することはできません。

-e <regex>
-regex <regex>

指定した正規表現パターンと一致するパッケージの依存関係を検出します。-pオプションと-eオプションを同時に指定することはできません。

-include <regex>

分析をパターンに一致するクラスに制限します。このオプションは、分析するクラスのリストをフィルタします。依存関係にパターンを適用する-pおよび-eとともに使用できます。

-jdkinternals

JDKの内部APIのクラスレベルの依存関係を検出します。デフォルトでは、-includeオプションを指定しないかぎり、-classpathオプションおよび入力ファイルに指定されたすべてのクラスを分析します。このオプションは、-pオプション、-eオプションおよび-sオプションとともに使用できません。

警告: JDKの内部APIは、今後のリリースでアクセスできなくなる可能性があります。

-P
-profile

パッケージを含むプロファイルまたはファイルを表示します。

-apionly

フィールド・タイプ、メソッド・パラメータ・タイプ、戻りタイプ、チェックされた例外タイプを含むパブリック・クラスのpublicおよびprotectedメンバーの署名からの依存関係など、分析をAPIに制限します。

-R
-recursive

すべての依存関係を再帰的に走査します。

-version

バージョン情報を出力します。

-h
-?
-help

jdepsに関するヘルプ・メッセージを出力します。

Notepad.jarの依存関係の分析。

$ jdeps demo/jfc/Notepad/Notepad.jar
demo/jfc/Notepad/Notepad.jar -> /usr/java/jre/lib/rt.jar
   <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  

-Pまたは-profileオプションを使用して、メモ帳が依存するプロファイルを表示します。

$ jdeps -profile demo/jfc/Notepad/Notepad.jar 
demo/jfc/Notepad/Notepad.jar -> /usr/java/jre/lib/rt.jar (Full JRE)
   <unnamed> (Notepad.jar)
      -> java.awt                                           Full JRE
      -> java.awt.event                                     Full JRE
      -> java.beans                                         Full JRE
      -> java.io                                            compact1
      -> java.lang                                          compact1
      -> java.net                                           compact1
      -> java.util                                          compact1
      -> java.util.logging                                  compact1
      -> javax.swing                                        Full JRE
      -> javax.swing.border                                 Full JRE
      -> javax.swing.event                                  Full JRE
      -> javax.swing.text                                   Full JRE
      -> javax.swing.tree                                   Full JRE
      -> javax.swing.undo                                   Full JRE

tools.jarファイル内のcom.sun.tools.jdeps.Mainクラスなど、特定のクラスパス内の特定のクラスの直接依存関係の分析。

$ jdeps -cp lib/tools.jar com.sun.tools.jdeps.Main
lib/tools.jar -> /usr/java/jre/lib/rt.jar
   com.sun.tools.jdeps (tools.jar)
      -> java.io                                            
      -> java.lang 

-verbose:classオプションを使用して、クラスレベル依存関係を検索するか-vまたは-verboseオプションを使用して同じJARファイルからの依存関係を含めます。

$ jdeps -verbose:class -cp lib/tools.jar com.sun.tools.jdeps.Main
lib/tools.jar -> /usr/java/jre/lib/rt.jar
   com.sun.tools.jdeps.Main (tools.jar)
      -> java.io.PrintWriter                                
      -> java.lang.Exception                                
      -> java.lang.Object                                   
      -> java.lang.String                                   
      -> java.lang.System 

-Rまたは-recursiveオプションを使用して、com.sun.tools.jdeps.Mainクラスの推移的な依存関係を分析します。

$ jdeps -R -cp lib/tools.jar com.sun.tools.jdeps.Main
lib/tools.jar -> /usr/java/jre/lib/rt.jar
   com.sun.tools.classfile (tools.jar)
      -> java.io                                            
      -> java.lang                                          
      -> java.lang.reflect                                  
      -> java.nio.charset                                   
      -> java.nio.file                                      
      -> java.util                                          
      -> java.util.regex                                    
   com.sun.tools.jdeps (tools.jar)
      -> java.io                                            
      -> java.lang                                          
      -> java.nio.file                                      
      -> java.nio.file.attribute                            
      -> java.text                                          
      -> java.util                                          
      -> java.util.jar                                      
      -> java.util.regex                                    
      -> java.util.zip                                      
/usr/java/jre/lib/jce.jar -> /usr/java/jre/lib/rt.jar
   javax.crypto (jce.jar)
      -> java.io                                            
      -> java.lang                                          
      -> java.lang.reflect                                  
      -> java.net                                           
      -> java.nio                                           
      -> java.security                                      
      -> java.security.cert                                 
      -> java.security.spec                                 
      -> java.util                                          
      -> java.util.concurrent                               
      -> java.util.jar                                      
      -> java.util.regex                                    
      -> java.util.zip                                      
      -> javax.security.auth                                
      -> sun.security.jca                                   JDK internal API (rt.jar)
      -> sun.security.util                                  JDK internal API (rt.jar)
   javax.crypto.spec (jce.jar)
      -> java.lang                                          
      -> java.security.spec                                 
      -> java.util                                          
/usr/java/jre/lib/rt.jar -> /usr/java/jre/lib/jce.jar
   java.security (rt.jar)
      -> javax.crypto

メモ帳デモの依存関係のdotファイルを生成します。

$ jdeps -dotoutput dot demo/jfc/Notepad/Notepad.jar

jdepsは、-dotoutputオプションで指定されたdotディレクトリに<filename>.dotという名前のdotファイルを特定のJARファイルごとに作成し、JARファイル間の依存関係をリストするsummary.dotという名前のサマリー・ファイルも作成します

$ cat dot/Notepad.jar.dot 
digraph "Notepad.jar" {
    // Path: demo/jfc/Notepad/Notepad.jar
   "<unnamed>"                                        -> "java.awt";
   "<unnamed>"                                        -> "java.awt.event";
   "<unnamed>"                                        -> "java.beans";
   "<unnamed>"                                        -> "java.io";
   "<unnamed>"                                        -> "java.lang";
   "<unnamed>"                                        -> "java.net";
   "<unnamed>"                                        -> "java.util";
   "<unnamed>"                                        -> "java.util.logging";
   "<unnamed>"                                        -> "javax.swing";
   "<unnamed>"                                        -> "javax.swing.border";
   "<unnamed>"                                        -> "javax.swing.event";
   "<unnamed>"                                        -> "javax.swing.text";
   "<unnamed>"                                        -> "javax.swing.tree";
   "<unnamed>"                                        -> "javax.swing.undo";
}
$ cat dot/summary.dot
digraph "summary" {
   "Notepad.jar"                  -> "rt.jar";
}

関連項目

•javap(1)
2013年11月21日 JDK 8