JDEPS(1) دستورات JDK JDEPS(1)

jdeps-openjdk21 - تحلیل‌گر وابستگی‌های کلاس‌ها و بسته‌های جاوا در OpenJDK 21

jdeps [options] path ...

گزینه‌های خط فرمان. برای مشاهده توضیحات دقیق گزینه‌های قابل استفاده، ببینید:
•
گزینه‌های عمومی
•
گزینه‌های تحلیل وابستگی ماژول
•
گزینه‌های فیلتر کردن وابستگی‌ها
•
گزینه‌های فیلتر کردن کلاس‌های مورد تحلیل
مسیر فایل .class، دایرکتوری، یا فایل JAR مورد تحلیل.

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

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

-verbose:class -filter:none

-verbose:package
وابستگی‌های سطح بسته را چاپ می‌کند و به صورت پیش‌فرض، وابستگی‌های درون همان بسته را نادیده می‌گیرد.
-verbose:class
وابستگی‌های سطح کلاس را چاپ می‌کند و به صورت پیش‌فرض، وابستگی‌های درون همان آرشیو را نادیده می‌گیرد.
-apionly یا --api-only
تحلیل را به APIها محدود می‌کند؛ برای مثال، وابستگی‌های ناشی از امضای اعضای public و protected کلاس‌های عمومی شامل نوع فیلد، نوع پارامترهای متد، نوع مقدار بازگشتی، و انواع استثناهای بررسی‌شده (checked exceptions).
-jdkinternals یا --jdk-internals
وابستگی‌های سطح کلاس به APIهای داخلی JDK را پیدا می‌کند. به طور پیش‌فرض، این گزینه تمام کلاس‌های مشخص‌شده در گزینه --classpath و فایل‌های ورودی را تحلیل می‌کند، مگر آنکه گزینه -include مشخص شده باشد. نمی‌توان از این گزینه همراه با گزینه‌های -p، -e، و -s استفاده کرد.

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

-cp path، -classpath path، یا --class-path path
مسیر جستجوی فایل‌های کلاس را مشخص می‌کند.
--module-path module-path
مسیر ماژول‌ها (module path) را مشخص می‌کند.
--upgrade-module-path module-path
مسیر ماژول‌های ارتقایی (upgrade module path) را مشخص می‌کند.
--system java-home
یک مسیر جایگزین برای ماژول‌های سیستم مشخص می‌کند.
--add-modules module-name[, module-name...]
ماژول‌ها را به مجموعه ریشه (root set) برای تحلیل اضافه می‌کند.
--multi-release version
نسخه مورد نظر را هنگام پردازش فایل‌های JAR چندنسخه‌ای (multi-release) مشخص می‌کند. مقدار version باید یک عدد صحیح بزرگتر یا مساوی ۹ یا عبارت base باشد.
-q یا -quiet
وابستگی‌های مفقود را در خروجی -generate-module-info نمایش نمی‌دهد.
-version یا --version
اطلاعات نسخه را چاپ می‌کند.

-m module-name یا --module module-name
ماژول ریشه را برای تحلیل مشخص می‌کند.
--generate-module-info dir
فایل module-info.java را در دایرکتوری مشخص‌شده تولید می‌کند. فایل‌های JAR مشخص‌شده تحلیل خواهند شد. این گزینه نمی‌تواند همراه با گزینه‌های --dot-output یا --class-path استفاده شود. برای ماژول‌های باز (open modules) از گزینه --generate-open-module استفاده کنید.
--generate-open-module dir
فایل module-info.java را برای فایل‌های JAR مشخص‌شده در دایرکتوری تعیین‌شده به عنوان ماژول‌های باز تولید می‌کند. این گزینه نمی‌تواند همراه با گزینه‌های --dot-output یا --class-path استفاده شود.
--check module-name [, module-name...]
وابستگی ماژول‌های مشخص‌شده را تحلیل می‌کند. توصیف‌کننده ماژول (module descriptor)، وابستگی‌های نهایی ماژول پس از تحلیل و گراف حاصل را پس از کاهش انتقالی (transition reduction) چاپ می‌کند. همچنین صادرات اختصاصی استفاده‌نشده (unused qualified exports) را شناسایی می‌کند.
--list-deps
وابستگی‌های ماژول و همچنین نام بسته‌های APIهای داخلی JDK (در صورت ارجاع) را فهرست می‌کند. این گزینه کتابخانه‌های موجود در class path و module path را در صورت ارجاع به طور بازگشتی و انتقالی تحلیل می‌کند. برای تحلیل غیرانتقالی وابستگی‌ها از گزینه --no-recursive استفاده کنید.
--list-reduced-deps
مشابه --list-deps است با این تفاوت که یال‌های خواندن ضمنی (implied reads edges) را از گراف ماژول حذف می‌کند. اگر ماژول M1 ماژول M2 را بخواند، و M2 نیازمندی انتقالی (transitive requires) بر روی M3 داشته باشد، خواندن M3 توسط M1 ضمنی بوده و در گراف نمایش داده نمی‌شود.
--print-module-deps
مشابه --list-reduced-deps است اما فهرستی از وابستگی‌های ماژول را با کاما جدا کرده و چاپ می‌کند. خروجی می‌تواند توسط jlink --add-modules برای ایجاد یک ایمیج سفارشی شامل آن ماژول‌ها و وابستگی‌های انتقالی آن‌ها استفاده شود.
--ignore-missing-deps
از وابستگی‌های مفقود چشم‌پوشی می‌کند.

-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 یا -filter regex
وابستگی‌های منطبق با الگوی مشخص‌شده را فیلتر می‌کند. در صورت تکرار، آخرین مورد انتخاب خواهد شد.
-filter:package
وابستگی‌های درون همان بسته را فیلتر می‌کند. این حالت پیش‌فرض است.
-filter:archive
وابستگی‌های درون همان آرشیو را فیلتر می‌کند.
-filter:module
وابستگی‌های درون همان ماژول را فیلتر می‌کند.
-filter:none
فیلترهای -filter:package و -filter:archive را اعمال نمی‌کند. فیلتر مشخص‌شده از طریق گزینه -filter همچنان اعمال می‌شود.
--missing-deps
وابستگی‌های مفقود را پیدا می‌کند. این گزینه نمی‌تواند همراه با گزینه‌های -p، -e و -s استفاده شود.

-include regex
تحلیل را به کلاس‌های منطبق با الگو محدود می‌کند. این گزینه فهرست کلاس‌های مورد تحلیل را فیلتر می‌کند. می‌توان از آن همراه با -p و -e که الگو را بر روی وابستگی‌ها اعمال می‌کنند، استفاده کرد.
-P یا -profile
پروفایل شامل یک بسته را نمایش می‌دهد. این گزینه منسوخ شده و ممکن است در نسخه‌های آینده حذف شود.
-R یا --recursive
تمام وابستگی‌های زمان اجرا را به صورت بازگشتی پیمایش می‌کند. گزینه -R به طور ضمنی شامل -filter:none است. اگر گزینه‌های -p، -e، یا -f مشخص شده باشند، فقط وابستگی‌های منطبق تحلیل می‌شوند.
--no-recursive
وابستگی‌ها را به صورت بازگشتی پیمایش نمی‌کند.
-I یا --inverse
وابستگی‌ها را طبق سایر گزینه‌های مشخص‌شده تحلیل کرده و سپس تمام آرتیفکت‌هایی را که مستقیماً یا غیرمستقیم به گره‌های منطبق وابسته هستند پیدا می‌کند. این معادل معکوس تحلیل نمای زمان کامپایل و چاپ خلاصه وابستگی‌ها است. این گزینه باید همراه با گزینه‌های --require، --package، یا --regex استفاده شود.
--compile-time
نمای زمان کامپایل وابستگی‌های انتقالی را تحلیل می‌کند، مانند نمای زمان کامپایل گزینه -R. وابستگی‌ها را طبق سایر گزینه‌های مشخص‌شده تحلیل می‌کند. اگر وابستگی از یک دایرکتوری، فایل JAR یا ماژول پیدا شود، تمام کلاس‌های موجود در آن آرشیو حاوی تحلیل می‌شوند.

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

لینوکس و macOS:


$ 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
2023 JDK 21