| JDEPS(1) | دستورات JDK | JDEPS(1) |
نام (NAME)
jdeps-openjdk21 - تحلیلگر وابستگیهای کلاسها و بستههای جاوا در OpenJDK 21
خلاصه دستور (SYNOPSIS)
jdeps [options] path ...
- options
- گزینههای خط فرمان. برای مشاهده توضیحات دقیق گزینههای قابل استفاده، ببینید:
- •
- گزینههای عمومی
- •
- گزینههای تحلیل وابستگی ماژول
- •
- گزینههای فیلتر کردن وابستگیها
- •
- گزینههای فیلتر کردن کلاسهای مورد تحلیل
- path
- مسیر فایل .class، دایرکتوری، یا فایل JAR مورد تحلیل.
توضیحات (DESCRIPTION)
دستور jdeps وابستگیهای سطح بسته (package-level) یا سطح کلاس (class-level) فایلهای کلاس جاوا را نمایش میدهد. کلاس ورودی میتواند مسیر یک فایل .class، یک دایرکتوری، یک فایل JAR، یا نام کامل کلاس (fully qualified class name) برای تحلیل تمام فایلهای کلاس باشد. گزینهها نوع خروجی را تعیین میکنند. به طور پیشفرض، دستور jdeps وابستگیها را در خروجی استاندارد سیستم مینویسد. این دستور همچنین میتواند وابستگیها را به زبان DOT تولید کند (گزینه -dotoutput را ببینید).
گزینههای عمومی (POSSIBLE OPTIONS)
- -? یا -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
- اطلاعات نسخه را چاپ میکند.
گزینههای تحلیل وابستگی ماژول (MODULE DEPENDENCE ANALYSIS OPTIONS)
- -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
- از وابستگیهای مفقود چشمپوشی میکند.
گزینههای فیلتر کردن وابستگیها (OPTIONS TO FILTER DEPENDENCES)
- -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 استفاده شود.
گزینههای فیلتر کردن کلاسهای مورد تحلیل (OPTIONS TO FILTER CLASSES TO BE ANALYZED)
- -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 یا ماژول پیدا شود، تمام کلاسهای موجود در آن آرشیو حاوی تحلیل میشوند.
مثال تحلیل وابستگیها (EXAMPLE OF ANALYZING DEPENDENCIES)
مثال زیر تحلیل وابستگیهای فایل 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
مثال استفاده از گزینه INVERSE-- (EXAMPLE USING THE --INVERSE OPTION)
-
$ 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 |