JLINK(1) JDK Commands JLINK(1)

jlink - سرهم‌بندی و بهینه‌سازی مجموعه‌ای از ماژول‌ها و وابستگی‌های آن‌ها در یک ایمیج زمان اجرای سفارشی

jlink [options] --module-path modulepath --add-modules module[,module...]

گزینه‌های خط فرمان که با فاصله از هم جدا می‌شوند. بخش گزینه‌های jlink را ببینید.
مسیری که ابزار jlink در آن ماژول‌های قابل مشاهده را پیدا می‌کند. این ماژول‌ها می‌توانند فایل‌های JAR ماژولار، فایل‌های JMOD یا ماژول‌های بسته‌بندی‌نشده (exploded) باشند.
نام ماژول‌هایی که باید به ایمیج زمان اجرا اضافه شوند. ابزار jlink این ماژول‌ها و وابستگی‌های متعدی (transitive) آن‌ها را اضافه می‌کند.

ابزار jlink مجموعه‌ای از ماژول‌ها را همراه با وابستگی‌های متعدی آن‌ها پیوند می‌دهد تا یک ایمیج زمان اجرای سفارشی ایجاد کند.

نکته:

توسعه‌دهندگان مسئول به‌روزرسانی ایمیج‌های زمان اجرای سفارشی خود هستند.

ماژول‌های نام‌برده‌شده، mod، را به مجموعه پیش‌فرض ماژول‌های ریشه اضافه می‌کند. مجموعه پیش‌فرض ماژول‌های ریشه خالی است.
ماژول‌های ارائه‌دهنده سرویس و وابستگی‌های آن‌ها را پیوند می‌دهد.
فشرده‌سازی منابع را فعال می‌کند:
  • 0: بدون فشرده‌سازی
  • 1: اشتراک‌گذاری رشته‌های ثابت (Constant string sharing)
  • 2: ZIP
پلاگین مشخص‌شده را غیرفعال می‌کند. برای فهرست پلاگین‌های پشتیبانی‌شده، بخش پلاگین‌های jlink را ببینید.
ترتیب بایت‌ها (byte order) را برای ایمیج تولیدشده مشخص می‌کند. مقدار پیش‌فرض، ساختار معماری سیستم شما است.
پیام راهنما را چاپ می‌کند.
هنگامی که فایل‌های JAR ماژولار امضاشده در ایمیج زمان اجرا پیوند می‌خورند، از خطای مهلک (fatal error) چشم‌پوشی می‌کند. فایل‌های مربوط به امضای فایل‌های JAR ماژولار امضاشده در ایمیج زمان اجرا کپی نمی‌شوند.
نام دستور راه‌انداز (launcher) را برای ماژول یا نام دستور را برای ماژول و کلاس اصلی مشخص می‌کند (نام ماژول و کلاس اصلی با یک اسلش (/) از هم جدا می‌شوند).
دامنه ماژول‌های قابل مشاهده را به ماژول‌های موجود در بستار متعدی ماژول‌های نام‌برده‌شده، mod، به علاوه ماژول اصلی (در صورت وجود)، و هر ماژول دیگری که در گزینه --add-modules مشخص شده است، محدود می‌کند.
پلاگین‌های در دسترس را که می‌توانید از طریق گزینه‌های خط فرمان به آن‌ها دسترسی داشته باشید فهرست می‌کند؛ بخش پلاگین‌های jlink را ببینید.
مسیر ماژول را مشخص می‌کند.
اگر این گزینه مشخص نشود، مسیر پیش‌فرض ماژول $JAVA_HOME/jmods خواهد بود. این دایرکتوری شامل ماژول java.base و سایر ماژول‌های استاندارد و JDK است. اگر این گزینه مشخص شود اما ماژول java.base در آن پیدا نشود، دستور jlink مسیر $JAVA_HOME/jmods را به انتهای مسیر ماژول اضافه می‌کند.
فایل‌های سرآیند (header files) را حذف می‌کند.
صفحات man را حذف می‌کند.
محل ایمیج زمان اجرای تولیدشده را مشخص می‌کند.
گزینه‌های jlink را در فایل مشخص‌شده ذخیره می‌کند.
ارائه‌دهندگانی را از مسیر ماژول پیشنهاد می‌کند که انواع سرویس داده‌شده را پیاده‌سازی کرده‌اند.
اطلاعات نسخه را چاپ می‌کند.
@filename
گزینه‌ها را از فایل مشخص‌شده می‌خواند.
فایل گزینه‌ها یک فایل متنی است که شامل گزینه‌ها و مقادیری است که معمولاً در خط فرمان وارد می‌کنید. گزینه‌ها ممکن است در یک خط یا در چند خط قرار بگیرند. نمی‌توانید متغیرهای محیطی را برای نام مسیرها مشخص کنید. می‌توانید با قرار دادن نماد هش (#) در ابتدای خط، آن خط را تبدیل به توضیح (کامنت) کنید. در زیر نمونه‌ای از یک فایل گزینه‌ها برای دستور jlink آورده شده است:
#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={0|1|2}[:filter=pattern-list]
توضیحات
تمام منابع را در ایمیج خروجی فشرده می‌کند.
  • سطح 0: بدون فشرده‌سازی
  • سطح 1: اشتراک‌گذاری رشته‌های ثابت
  • سطح 2: ZIP یک فیلتر اختیاری pattern-list می‌تواند برای تعیین الگوی فایل‌هایی که باید گنجانده شوند مشخص شود.

گزینه‌ها
--include-locales=langtag[,langtag]*
توضیحات
فهرست محلی‌سازی‌ها (locales) را شامل می‌شود که در آن langtag یک برچسب زبان BCP 47 است. این گزینه از تطبیق محلی‌سازی تعریف‌شده در RFC 4647 پشتیبانی می‌کند. اطمینان حاصل کنید که هنگام استفاده از این گزینه، ماژول jdk.localedata را اضافه کرده باشید.
مثال:

--add-modules jdk.localedata --include-locales=en,ja,*-IN

گزینه‌ها
--order-resources=pattern-list
توضیحات
مسیرهای مشخص‌شده را بر اساس اولویت مرتب می‌کند. اگر @filename مشخص شده باشد، هر خط در pattern-list باید برای مسیرهای مرتب‌شونده یک تطابق دقیق باشد.
مثال:

--order-resources=/module-info.class,@classlist,/java.base/java/lang/

گزینه‌ها
--strip-debug
توضیحات
اطلاعات اشکال‌زدایی (debug) را از ایمیج خروجی حذف می‌کند.

گزینه‌ها
--generate-cds-archive
توضیحات
اگر ایمیج زمان اجرا از قابلیت CDS پشتیبانی کند، آرشیو CDS را تولید می‌کند.

دستور زیر یک ایمیج زمان اجرا در دایرکتوری greetingsapp ایجاد می‌کند. این دستور ماژول com.greetings را پیوند می‌دهد، که تعریف ماژول آن در دایرکتوری mlib قرار دارد.

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 ایجاد می‌کند که نمادهای اشکال‌زدایی از آن حذف شده‌اند، از فشرده‌سازی برای کاهش فضا استفاده می‌کند و شامل اطلاعات محلی زبان فرانسوی است:

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 و وابستگی‌های آن‌ها است، اما هیچ ارائه‌دهنده دیگری را شامل نمی‌شود. توجه داشته باشید که این وابستگی‌ها باید در مسیر ماژول وجود داشته باشند:

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 25.0.4.1