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)