| 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 ={0|1|2} یا --compress={0|1|2}
- فعالسازی فشردهسازی منابع:
- •
- 0: بدون فشردهسازی
- •
- 1: اشتراک رشتههای ثابت
- •
- 2: ZIP
- --disable-plugin pluginname
- پلاگین مشخصشده را غیرفعال میکند. برای دیدن فهرست پلاگینهای پشتیبانیشده، بخش پلاگینهای jlink را ببینید.
- --endian {little|big}
- ترتیب بایت (byte order) ایمیج تولیدشده را مشخص میکند. مقدار پیشفرض، قالب معماری سیستم شما است.
- -h یا --help
- پیام راهنما را چاپ میکند.
- --ignore-signing-information
- از ایجاد خطای مهلک هنگام پیوند دادن فایلهای JAR مدولار امضاشده در ایمیج زمان اجرا جلوگیری میکند. فایلهای مربوط به امضا در JARهای مدولار امضاشده در ایمیج زمان اجرا کپی نمیشوند.
- --launcher command=module یا --launcher command=module/main
- نام دستور اجراکننده (launcher) را برای ماژول یا نام دستور را برای ماژول و کلاس اصلی مشخص میکند (نامهای ماژول و کلاس اصلی با یک اسلش (/) جدا میشوند).
- --limit-modules mod [, mod...]
- گستره ماژولهای قابلمشاهده را به ماژولهای موجود در بستار متعدی ماژولهای نامبرده، mod، بهعلاوه ماژول اصلی (در صورت وجود)، بهعلاوه هر ماژول دیگری که در گزینه --add-modules مشخص شده، محدود میکند.
- --list-plugins
- پلاگینهای دردسترس را که میتوانید از طریق گزینههای خط فرمان به آنها دسترسی پیدا کنید فهرست میکند؛ بخش پلاگینهای jlink را ببینید.
- -p یا --module-path modulepath
- مسیر ماژول را مشخص میکند.
اگر این گزینه مشخص نشود، مسیر ماژول پیشفرض $JAVA_HOME/jmods خواهد بود. این دایرکتوری حاوی ماژول java.base و سایر ماژولهای استاندارد و JDK است. اگر این گزینه مشخص شود اما ماژول java.base از طریق آن قابل حل نباشد، دستور jlink مقدار $JAVA_HOME/jmods را به انتهای مسیر ماژول اضافه میکند.
- --no-header-files
- فایلهای سرآیند را مستثنی میکند.
- --no-man-pages
- صفحات man را مستثنی میکند.
- --output path
- مکان ایمیج زمان اجرای تولیدشده را مشخص میکند.
- --save-opts filename
- گزینههای jlink را در فایل مشخصشده ذخیره میکند.
- --suggest-providers [name, ...]
- ارائهدهندگانی از مسیر ماژول را پیشنهاد میدهد که انواع سرویس دادهشده را پیادهسازی میکنند.
- --version
- اطلاعات نسخه را چاپ میکند.
- @filename
- گزینهها را از فایل مشخصشده میخواند.
فایل گزینهها یک فایل متنی است که شامل گزینهها و مقادیری است که شما معمولاً در خط فرمان وارد میکنید. گزینهها ممکن است در یک خط یا در چندین خط قرار گیرند. نمیتوانید از متغیرهای محیطی برای نام مسیرها استفاده کنید. میتوانید با قرار دادن یک نماد هش (#) در ابتدای خط، آن خط را تبدیل به توضیح (کامنت) کنید..PP در ادامه مثالی از یک فایل گزینهها برای دستور jlink آورده شده است:
-
#Wed Dec 07 00:40:19 EST 2016 --module-path mlib --add-modules com.greetings --output greetingsapp
افزونههای JLINK (JLINK PLUG-INS)
نکته:
افزونههایی که در این بخش فهرست نشدهاند پشتیبانی نمیشوند و ممکن است دستخوش تغییر شوند.
برای گزینههای افزونه که به pattern-list نیاز دارند، مقدار مربوطه فهرستی جداشده با کاما از عناصر است که هر عنصر از یکی از قالبهای زیر پیروی میکند:
- •
- glob-pattern
- •
- glob:glob-pattern
- •
- regex:regex-pattern
- •
- @filename
- •
- filename نام فایلی است شامل الگوهای مورد استفاده، هر الگو در یک خط.
برای دریافت فهرست کاملی از تمام افزونههای موجود، دستور jlink --list-plugins را اجرا کنید.
افزونهی compress
- گزینهها
- --compress={0|1|2}[:filter=pattern-list]
- توضیحات
- همه منابع را در ایمیج خروجی فشرده میکند.
- •
- سطح ۰: بدون فشردهسازی
- •
- سطح ۱: اشتراک رشتههای ثابت
- •
- سطح ۲: ZIP
یک فیلتر اختیاری pattern-list میتواند برای تعیین الگوی فایلهایی که باید گنجانده شوند مشخص گردد.
افزونهی include-locales
- گزینهها
- --include-locales=langtag[,langtag]*
- توضیحات
- فهرستی از محلیسازیها (locales) را شامل میشود که در آن 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) را از ایمیج خروجی حذف میکند.
مثالهای 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
مثال زیر ارائهدهندگانی را فهرست میکند که 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.crypto.ec provides java.security.Provider used by java.base jdk.crypto.mscapi 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
| 2021 | JDK 17 |