jdeps(1) Basic Tools jdeps(1)

jdeps-openjdk11 - تحلیل‌گر وابستگی‌های کلاس جاوا

jdeps [options] classes ...
گزینه‌های خط فرمان. بخش گزینه‌ها را ببینید.
نام کلاس‌ها برای تحلیل. می‌توانید کلاسی را مشخص کنید که در مسیر کلاس (class path) با نام فایل آن، یک دایرکتوری یا یک فایل JAR پیدا شود.

دستور jdeps وابستگی‌های فایل‌های کلاس جاوا را در سطح بسته یا در سطح کلاس نمایش می‌دهد. کلاس ورودی می‌تواند مسیر یک فایل .class، یک دایرکتوری، یک فایل JAR یا یک نام کامل کلاس (fully qualified class name) برای تحلیل تمام فایل‌های کلاس باشد. گزینه‌ها نوع خروجی را تعیین می‌کنند. به‌طور پیش‌فرض، jdeps وابستگی‌ها را در خروجی سیستم چاپ می‌کند. این ابزار می‌تواند وابستگی‌ها را در زبان DOT تولید کند (گزینه -dotoutput را ببینید).


دایرکتوری مقصد برای خروجی فایل DOT. در صورت تعیین، jdeps برای هر آرشیو تحلیل‌شده یک فایل dot با نام <archive-file-name>.dot شامل فهرست وابستگی‌ها و همچنین یک فایل خلاصه با نام summary.dot شامل فهرست وابستگی‌های میان آرشیوها تولید می‌کند.

تنها خلاصه وابستگی‌ها را چاپ می‌کند.

تمام وابستگی‌ها در سطح کلاس را چاپ می‌کند.

وابستگی‌ها در سطح بسته را بدون احتساب وابستگی‌های درون همان آرشیو چاپ می‌کند.

وابستگی‌ها در سطح کلاس را بدون احتساب وابستگی‌های درون همان آرشیو چاپ می‌کند.

محل یافتن فایل‌های کلاس را مشخص می‌کند.

همچنین بخش تنظیم مسیر کلاس (Setting the Class Path) را ببینید.


وابستگی‌ها را در بسته مشخص‌شده پیدا می‌کند. می‌توانید این گزینه را چندین بار برای بسته‌های مختلف مشخص کنید. گزینه‌های -p و -e مانعة‌الجمع هستند.

وابستگی‌ها را در بسته‌هایی که با الگوی عبارت باقاعده (regex) مشخص‌شده مطابقت دارند پیدا می‌کند. گزینه‌های -p و -e مانعة‌الجمع هستند.

تحلیل را به کلاس‌هایی که با الگو مطابقت دارند محدود می‌کند. این گزینه فهرست کلاس‌های مورد تحلیل را فیلتر می‌کند. این گزینه را می‌توان همراه با -p و -e که الگو را روی وابستگی‌ها اعمال می‌کنند به کار برد.

وابستگی‌های در سطح کلاس به APIهای داخلی JDK را پیدا می‌کند. به‌طور پیش‌فرض، تمام کلاس‌های مشخص‌شده در گزینه -classpath و فایل‌های ورودی را تحلیل می‌کند مگر اینکه گزینه -include را مشخص کرده باشید. نمی‌توانید از این گزینه همراه با گزینه‌های -p، -e و -s استفاده کنید.

هشدار: ممکن است APIهای داخلی JDK در نسخه‌های بعدی در دسترس نباشند.


پروفایل یا فایل حاوی یک بسته را نمایش می‌دهد.

تحلیل را به APIها محدود می‌کند؛ به عنوان مثال، وابستگی‌های ناشی از امضای اعضای public و protected کلاس‌های عمومی، شامل نوع فیلد، انواع پارامترهای متد، نوع بازگشتی و انواع استثناهای بررسی‌شده (checked exceptions).

تمام وابستگی‌ها را به‌صورت بازگشتی پیمایش می‌کند.

اطلاعات نسخه را چاپ می‌کند.

پیام راهنمای 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 برای نمایش اینکه Notepad به کدام پروفایل وابسته است.

$ 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

تحلیل وابستگی‌های مستقیم یک کلاس خاص در یک مسیر کلاس مشخص، به عنوان مثال کلاس com.sun.tools.jdeps.Main در فایل tools.jar.

$ 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 از وابستگی‌های نسخه نمایشی Notepad.

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

دستور jdeps برای هر فایل JAR داده‌شده یک فایل dot با نام <filename>.dot در دایرکتوری dot مشخص‌شده در گزینه -dotoutput ایجاد می‌کند، و همچنین یک فایل خلاصه با نام summary.dot ایجاد خواهد کرد که وابستگی‌های میان فایل‌های JAR را فهرست می‌کند.

$ 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)
21 November 2013 JDK 8