| JLINK(1) | JDK Commands | JLINK(1) |
نام (NAME)
jlink - سرهمبندی و بهینهسازی مجموعهای از ماژولها و وابستگیهای آنها در یک ایمیج زمان اجرای سفارشی
خلاصه دستور (SYNOPSIS)
jlink [options] --module-path modulepath --add-modules module[,module...]
- options
- گزینههای خط فرمان که با فاصله از هم جدا شدهاند. بخش گزینههای jlink را ببینید.
- modulepath
- مسیری که ابزار jlink ماژولهای قابل مشاهده را در آن شناسایی میکند. این ماژولها میتوانند فایلهای ماژولار JAR، فایلهای JMOD یا ماژولهای بازشده (exploded modules) باشند.
- module
- نام ماژولهایی که باید به ایمیج زمان اجرا افزوده شوند. ابزار jlink این ماژولها و وابستگیهای متعدی آنها را اضافه میکند.
توضیحات (DESCRIPTION)
ابزار jlink مجموعهای از ماژولها را به همراه وابستگیهای متعدی آنها پیوند میدهد تا یک ایمیج زمان اجرای سفارشی ایجاد کند.
نکته:
توسعهدهندگان خود مسئول بهروزرسانی ایمیجهای زمان اجرای سفارشیشان هستند.
گزینههای JLINK (JLINK OPTIONS)
- --add-modules mod[,mod...]
- ماژولهای نامبرده، mod، را به مجموعه پیشفرض ماژولهای ریشه اضافه میکند. مجموعه پیشفرض ماژولهای ریشه خالی است.
- --bind-services
- پیوند دادن ماژولهای ارائهدهنده سرویس و وابستگیهای آنها.
- -c zip-{0-9} یا --compress=zip-{0-9}
- فشردهسازی منابع را فعال میکند. مقادیر پذیرفتهشده عبارتند از: zip-{0-9}، که در آن zip-0 بدون فشردهسازی و zip-9 بیشترین فشردهسازی را فراهم میکند. پیشفرض zip-6 است.
- 0: بدون فشردهسازی. به جای آن از zip-0 استفاده کنید.
- 1: اشتراکگذاری رشتههای ثابت (Constant string sharing).
- 2: ZIP. به جای آن از zip-6 استفاده کنید.
- --disable-plugin pluginname
- پلاگین مشخصشده را غیرفعال میکند. برای مشاهده فهرست پلاگینهای پشتیبانیشده، بخش پلاگینهای jlink را ببینید.
- --endian {little|big}
- ترتیب بایتها (Endianness) را برای ایمیج ایجادشده تعیین میکند. مقدار پیشفرض، ساختار معماری سیستم شماست.
- -h یا --help
- پیام راهنما را نمایش میدهد.
- --ignore-signing-information
- از بروز خطای مهلک هنگام پیوند دادن JARهای ماژولار امضاشده در ایمیج زمان اجرا جلوگیری میکند. فایلهای مرتبط با امضا در JARهای ماژولار امضاشده به ایمیج زمان اجرا کپی نمیشوند.
- --launcher command=module یا --launcher command=module/main
- نام دستور اجراکننده (launcher) را برای ماژول، یا نام دستور را برای ماژول و کلاس اصلی مشخص میکند (نام ماژول و کلاس اصلی با یک اسلش (/) جدا میشوند).
- --limit-modules mod[,mod...]
- محدوده ماژولهای قابل مشاهده را به موارد موجود در بستار متعدی (transitive closure) ماژولهای نامبرده، mod، بهعلاوه ماژول اصلی (در صورت وجود)، بهعلاوه هر ماژول دیگری که در گزینه --add-modules مشخص شده است، محدود میکند.
- --list-plugins
- پلاگینهای موجود را که میتوانید از طریق گزینههای خط فرمان به آنها دسترسی داشته باشید، فهرست میکند؛ بخش پلاگینهای jlink را ببینید.
- -p یا --module-path modulepath
- مسیر ماژول را مشخص میکند.
- --no-header-files
- فایلهای سرآیند (header files) را مستثنی میکند.
- --no-man-pages
- صفحات راهنما (man pages) را مستثنی میکند.
- --output path
- محل ذخیره ایمیج زمان اجرای تولیدشده را تعیین میکند.
- --save-opts filename
- گزینههای jlink را در فایل مشخصشده ذخیره میکند.
- --suggest-providers [name, ...]
- ارائهدهندگانی را از مسیر ماژول پیشنهاد میکند که انواع سرویس دادهشده را پیادهسازی کرده باشند.
- --version
- اطلاعات نسخه را چاپ میکند.
- @filename
- گزینهها را از فایل مشخصشده میخواند.
-
#Wed Dec 07 00:40:19 EST 2016 --module-path mlib --add-modules com.greetings --output greetingsapp
نکته:
پلاگینهایی که در این بخش فهرست نشدهاند پشتیبانی نمیشوند و ممکن است تغییر کنند.
برای گزینههای پلاگینی که به یک pattern-list نیاز دارند، مقدار ورودی فهرستی از عناصر است که با کاما از یکدیگر جدا شدهاند و هر عنصر از یکی از قالبهای زیر پیروی میکند:
- glob-pattern
- glob:glob-pattern
- regex:regex-pattern
- @filename
- •
- filename نام فایلی است که الگوهای مورد استفاده را در بر دارد؛ در هر خط یک الگو.
برای مشاهده فهرست کامل تمام پلاگینهای موجود، دستور jlink --list-plugins را اجرا کنید.
پلاگین compress
- گزینهها
- --compress=zip-{0-9}[:filter=pattern-list]
- توضیحات
- تمام منابع موجود در ایمیج خروجی را فشرده میکند. مقادیر مجاز عبارتند از: zip-{0-9}، که در آن zip-0 فاقد فشردهسازی بوده و zip-9 بهترین فشردهسازی را ارائه میدهد. پیشفرض zip-6 است.
- سطح 0: بدون فشردهسازی. بهجای آن از zip-0 استفاده کنید.
- سطح 1: اشتراکگذاری رشتههای ثابت (Constant string sharing)
- سطح 2: ZIP. بهجای آن از zip-6 استفاده کنید. یک فیلتر اختیاری pattern-list میتواند برای مشخص کردن الگوی فایلهای مشمول مشخص شود.
پلاگین include-locales
- گزینهها
- --include-locales=langtag[,langtag]*
- توضیحات
- فهرستی از لوکالها را شامل میشود که در آن langtag یک برچسب زبان BCP 47 است. این گزینه از تطبیق لوکال به صورتی که در RFC 4647 تعریف شده پشتیبانی میکند. اطمینان حاصل کنید که هنگام استفاده از این گزینه، ماژول jdk.localedata را اضافه کرده باشید.
--add-modules jdk.localedata --include-locales=en,ja,*-IN
پلاگین order-resources
- گزینهها
- --order-resources=pattern-list
- توضیحات
- مسیرهای مشخصشده را بر اساس اولویت مرتب میکند. اگر @filename مشخص شده باشد، آنگاه هر خط در pattern-list باید تطابق دقیقی برای مسیرهای مرتبشونده داشته باشد.
--order-resources=/module-info.class,@classlist,/java.base/java/lang/
- گزینهها
- --strip-debug
- توضیحات
- اطلاعات اشکالزدایی (debug) را از ایمیج خروجی حذف میکند.
پلاگین generate-cds-archive
- گزینهها
- --generate-cds-archive
- توضیحات
- در صورتی که ایمیج زمان اجرا از قابلیت CDS پشتیبانی کند، آرشیو CDS را تولید میکند.
مثالهای JLINK (JLINK EXAMPLES)
دستور زیر یک ایمیج زمان اجرا در دایرکتوری greetingsapp ایجاد میکند. این دستور ماژول com.greetings را که تعریف ماژول آن در دایرکتوری mlib قرار دارد، پیوند (link) میدهد.
-
jlink --module-path mlib --add-modules com.greetings --output greetingsapp
دستور زیر ماژولهای موجود در ایمیج زمان اجرای greetingsapp را فهرست میکند:
-
greetingsapp/bin/java --list-modules com.greetings java.base@11 java.logging@11 org.astro@1.0
دستور زیر یک ایمیج زمان اجرا در دایرکتوری compressedrt ایجاد میکند که نمادهای اشکالزدایی از آن پاک شدهاند، برای کاهش فضا از فشردهسازی استفاده میکند و شامل اطلاعات محلی (locale) زبان فرانسوی است:
-
jlink --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt
مثال زیر اندازهٔ ایمیج زمان اجرای compressedrt را با fr_rt مقایسه میکند که نمادهای اشکالزدایی از آن حذف نشدهاند و از فشردهسازی استفاده نمیکند:
-
jlink --add-modules jdk.localedata --include-locales=fr --output fr_rt du -sh ./compressedrt ./fr_rt 23M ./compressedrt 36M ./fr_rt
مثال زیر ارائهدهندگانی (providers) را که java.security.Provider را پیادهسازی میکنند فهرست میکند:
-
jlink --suggest-providers java.security.Provider Suggested providers: java.naming provides java.security.Provider used by java.base java.security.jgss provides java.security.Provider used by java.base java.security.sasl provides java.security.Provider used by java.base java.smartcardio provides java.security.Provider used by java.base java.xml.crypto provides java.security.Provider used by java.base jdk.crypto.cryptoki provides java.security.Provider used by java.base jdk.security.jgss provides java.security.Provider used by java.base
مثال زیر یک ایمیج زمان اجرای سفارشی به نام mybuild ایجاد میکند که تنها شامل java.naming و jdk.crypto.cryptoki و وابستگیهای آنها است و هیچ ارائهدهندهٔ دیگری را در بر نمیگیرد. توجه داشته باشید که این وابستگیها باید در مسیر ماژول (module path) وجود داشته باشند:
-
jlink --add-modules java.naming,jdk.crypto.cryptoki --output mybuild
دستور زیر مشابه دستوری است که ایمیج زمان اجرایی با نام greetingsapp ایجاد میکند، با این تفاوت که ماژولهای تحلیلشده از ماژولهای ریشه را با پیوند سرویس (service binding) لینک میکند؛ متد Configuration.resolveAndBind را ببینید.
-
jlink --module-path mlib --add-modules com.greetings --output greetingsapp --bind-services
دستور زیر ماژولهای موجود در ایمیج زمان اجرای greetingsapp ایجادشده توسط این دستور را فهرست میکند:
-
greetingsapp/bin/java --list-modules com.greetings java.base@11 java.compiler@11 java.datatransfer@11 java.desktop@11 java.logging@11 java.management@11 java.management.rmi@11 java.naming@11 java.prefs@11 java.rmi@11 java.security.jgss@11 java.security.sasl@11 java.smartcardio@11 java.xml@11 java.xml.crypto@11 jdk.accessibility@11 jdk.charsets@11 jdk.compiler@11 jdk.crypto.cryptoki@11 jdk.crypto.ec@11 jdk.crypto.mscapi@11 jdk.internal.opt@11 jdk.jartool@11 jdk.javadoc@11 jdk.jdeps@11 jdk.jfr@11 jdk.jlink@11 jdk.localedata@11 jdk.management@11 jdk.management.jfr@11 jdk.naming.dns@11 jdk.naming.rmi@11 jdk.security.auth@11 jdk.security.jgss@11 jdk.zipfs@11 org.astro@1.0
| 2026 | JDK 26.0.2.1 |