JDEPS(1) JDK Commands JDEPS(1)

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

jdeps [options] path ...

گزینه‌های خط فرمان. برای توضیحات دقیق گزینه‌های قابل استفاده، ببینید:
•
گزینه‌های ممکن (Possible Options)
•
گزینه‌های تحلیل وابستگی ماژول (Module Dependence Analysis Options)
•
گزینه‌های پالایش وابستگی‌ها (Options to Filter Dependences)
•
گزینه‌های پالایش کلاس‌های مورد تحلیل (Options to Filter Classes to be Analyzed)
نام مسیر فایل .class، دایرکتوری، یا فایل JAR مورد تحلیل.

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

-? یا -h یا --help
پیام راهنما را چاپ می‌کند.
دایرکتوری مقصد را برای خروجی فایل DOT مشخص می‌کند. اگر این گزینه مشخص شود، دستور jdeps برای هر بایگانی تحلیل‌شده یک فایل .dot به نام archive-file-name.dot تولید می‌کند که وابستگی‌ها را فهرست می‌نماید، و همچنین یک فایل خلاصه به نام summary.dot که وابستگی‌های بین فایل‌های بایگانی را فهرست می‌کند.
تنها خلاصه‌ای از وابستگی‌ها را چاپ می‌کند.
تمام وابستگی‌های سطح کلاس را چاپ می‌کند. این معادل است با:

-verbose:class -filter:none

وابستگی‌های سطح بسته را چاپ می‌کند که به‌طور پیش‌فرض، وابستگی‌های درون همان بسته حذف می‌شوند.
وابستگی‌های سطح کلاس را چاپ می‌کند که به‌طور پیش‌فرض، وابستگی‌های درون همان بایگانی حذف می‌شوند.
تحلیل را به APIها محدود می‌کند؛ برای مثال، وابستگی‌های حاصل از امضای اعضای public و protected کلاس‌های عمومی، شامل نوع فیلد، انواع پارامترهای متد، نوع بازگشتی و انواع استثناهای بررسی‌شده (checked exceptions).
وابستگی‌های سطح کلاس را در APIهای داخلی JDK پیدا می‌کند. به‌طور پیش‌فرض، این گزینه تمام کلاس‌های مشخص‌شده در گزینهٔ --classpath و فایل‌های ورودی را تحلیل می‌کند، مگر اینکه گزینهٔ -include را مشخص کرده باشید. نمی‌توانید از این گزینه همراه با گزینه‌های -p، -e و -s استفاده کنید.

هشدار: APIهای داخلی JDK غیرقابل دسترس هستند.

محل یافتن فایل‌های کلاس را مشخص می‌کند.
مسیر ماژول را مشخص می‌کند.
مسیر ماژول ارتقا را مشخص می‌کند.
یک مسیر ماژول سیستم جایگزین را مشخص می‌کند.
ماژول‌ها را برای تحلیل به مجموعهٔ ریشه اضافه می‌کند.
نسخه را هنگام پردازش فایل‌های JAR چندنسخه‌ای مشخص می‌کند. version باید یک عدد صحیح >=9 یا base باشد.
وابستگی‌های مفقود را در خروجی -generate-module-info نمایش نمی‌دهد.
اطلاعات نسخه را چاپ می‌کند.
ماژول ریشه را برای تحلیل مشخص می‌کند.
فایل module-info.java را در دایرکتوری مشخص‌شده تولید می‌کند. فایل‌های JAR مشخص‌شده تحلیل خواهند شد. این گزینه نمی‌تواند همراه با گزینه‌های --dot-output یا --class-path استفاده شود. برای ماژول‌های باز (open modules)، از گزینهٔ --generate-open-module استفاده کنید.
فایل module-info.java را برای فایل‌های JAR مشخص‌شده در دایرکتوری تعیین‌شده به‌عنوان ماژول‌های باز تولید می‌کند. این گزینه نمی‌تواند همراه با گزینه‌های --dot-output یا --class-path استفاده شود.
وابستگی ماژول‌های مشخص‌شده را تحلیل می‌کند. توصیف‌گر ماژول، وابستگی‌های حاصل از تحلیل ماژول، و گراف را پس از کاهش تعدی (transition reduction) چاپ می‌کند. همچنین هرگونه صادرات دارای صلاحیت (qualified exports) استفاده‌نشده را شناسایی می‌کند.
وابستگی‌های ماژول و همچنین نام بسته‌های APIهای داخلی JDK را (در صورت ارجاع داده شدن) فهرست می‌کند. این گزینه در صورت ارجاع، کتابخانه‌های موجود روی class path و module path را به‌صورت متعدی تحلیل می‌کند. برای تحلیل وابستگی‌های غیرمتعدی، از گزینهٔ --no-recursive استفاده کنید.
مشابه --list-deps است بدون فهرست کردن یال‌های خواندن ضمنی (implied reads) از گراف ماژول. اگر ماژول M1 ماژول M2 را بخواند، و M2 نیازمندی transitive بر M3 داشته باشد، آنگاه خواندن M3 توسط M1 به‌صورت ضمنی بوده و در گراف نشان داده نمی‌شود.
مشابه --list-reduced-deps همراه با چاپ فهرستی از وابستگی‌های ماژول که با کاما از هم جدا شده‌اند. خروجی می‌تواند توسط jlink --add-modules برای ایجاد یک ایمیج سفارشی حاوی آن ماژول‌ها و وابستگی‌های متعدی آن‌ها استفاده شود.
وابستگی‌های ناموجود را نادیده می‌گیرد.

وابستگی‌های منطبق با نام بستهٔ مشخص‌شده را پیدا می‌کند. می‌توانید این گزینه را چندین بار برای بسته‌های مختلف مشخص کنید. گزینه‌های -p و -e مانعة‌الجمع هستند.
وابستگی‌های منطبق با الگوی مشخص‌شده را پیدا می‌کند. گزینه‌های -p و -e مانعة‌الجمع هستند.
وابستگی‌های منطبق با نام ماژول داده‌شده را پیدا می‌کند (می‌تواند چندین بار مشخص شود). گزینه‌های --package، --regex و --require مانعة‌الجمع هستند.
وابستگی‌های منطبق با الگوی داده‌شده را فیلتر می‌کند. در صورت مشخص شدن چندین بار، آخرین مورد انتخاب خواهد شد.
وابستگی‌های درون همان بسته را فیلتر می‌کند. این حالت پیش‌فرض است.
وابستگی‌های درون همان آرشیو را فیلتر می‌کند.
وابستگی‌های درون همان ماژول را فیلتر می‌کند.
هیچ فیلترسازی -filter:package و -filter:archive اعمال نمی‌شود. فیلترسازی مشخص‌شده از طریق گزینهٔ -filter همچنان اعمال خواهد شد.
وابستگی‌های ناموجود را پیدا می‌کند. این گزینه نمی‌تواند همراه با گزینه‌های -p، -e و -s استفاده شود.
تحلیل را به کلاس‌های منطبق با الگو محدود می‌کند. این گزینه فهرست کلاس‌های مورد تحلیل را پالایش می‌کند. می‌توان آن را به همراه -p و -e که الگو را بر وابستگی‌ها اعمال می‌کنند، به کار برد.
پروفایل شامل یک بسته را نمایش می‌دهد.
به‌صورت بازگشتی تمامی وابستگی‌های زمان اجرا (run-time) را پیمایش می‌کند. گزینهٔ -R مستلزم -filter:none است. اگر گزینه‌های -p، -e یا -f مشخص شده باشند، تنها وابستگی‌های منطبق تحلیل می‌شوند.
وابستگی‌ها را به‌صورت بازگشتی پیمایش نمی‌کند.
وابستگی‌ها را بر اساس سایر گزینه‌های ارائه‌شده تحلیل می‌کند و سپس تمام مصنوعاتی را که به‌طور مستقیم و غیرمستقیم به گره‌های منطبق وابسته هستند، می‌یابد. این معادل وارون تحلیل نمای زمان کامپایل (compile-time) و چاپ خلاصهٔ وابستگی است. این گزینه باید به همراه گزینه‌های --require، --package یا --regex استفاده شود.
نمای زمان کامپایل وابستگی‌های متعدی را تحلیل می‌کند، مانند نمای زمان کامپایل گزینهٔ -R. وابستگی‌ها را بر اساس سایر گزینه‌های مشخص‌شده تحلیل می‌کند. اگر وابستگی از یک دایرکتوری، یک فایل JAR یا یک ماژول پیدا شود، تمام کلاس‌های درون آن آرشیو دربرگیرنده تحلیل می‌شوند.

مثال زیر نحوهٔ تحلیل وابستگی‌های فایل Notepad.jar را نشان می‌دهد.

لینوکس و 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

ویندوز:


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

 $ 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
2021 JDK 17