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 (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 (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 JDK 21 2023 JDEPS(1)