.\" Automatically generated by Pandoc 3.10.2 .\" .TH "JMOD" "1" "2026" "JDK 25.0.4.1" "JDK Commands" .SH "نام (NAME)" jmod \- ایجاد فایل‌های JMOD و فهرست کردن محتوای فایل‌های JMOD موجود .SH "خلاصه دستور (SYNOPSIS)" \f[CR]jmod\f[R] (\f[CR]create\f[R]|\f[CR]extract\f[R]|\f[CR]list\f[R]|\f[CR]describe\f[R]|\f[CR]hash\f[R]) [\f[I]options\f[R]] \f[I]jmod\-file\f[R] .PP شامل موارد زیر است: .PP \f[B]حالت‌های عملیاتی اصلی\f[R] .TP \f[CR]create\f[R] یک فایل آرشیو JMOD جدید ایجاد می‌کند. .TP \f[CR]extract\f[R] تمام فایل‌ها را از فایل آرشیو JMOD استخراج می‌کند. .TP \f[CR]list\f[R] نام تمام مدخل‌ها را چاپ می‌کند. .TP \f[CR]describe\f[R] جزئیات ماژول را چاپ می‌کند. .TP \f[CR]hash\f[R] ماژول‌های برگ را تعیین کرده و هش‌های وابستگی‌هایی را که به‌طور مستقیم یا غیرمستقیم به آن‌ها نیاز دارند ثبت می‌کند. .PP \f[B]گزینه‌ها\f[R] .TP \f[I]options\f[R] بخش \f[B]گزینه‌های jmod\f[R] را ببینید. .PP \f[B]ضروری\f[R] .TP \f[I]jmod\-file\f[R] نام فایل JMOD را برای ایجاد یا برای بازیابی اطلاعات از آن مشخص می‌کند. .SH "توضیحات (DESCRIPTION)" \f[B]نکته:\f[R] برای بیشتر کارهای توسعه، از جمله استقرار ماژول‌ها در مسیر ماژول (module path) یا انتشار آن‌ها در یک مخزن Maven، همچنان به بسته‌بندی ماژول‌ها در فایل‌های JAR ماژولار ادامه دهید. ابزار \f[CR]jmod\f[R] برای ماژول‌هایی در نظر گرفته شده است که دارای کتابخانه‌های بومی (native) یا سایر فایل‌های پیکربندی هستند، یا ماژول‌هایی که قصد دارید آن‌ها را با ابزار \f[B]jlink\f[R] به یک ایمیج زمان اجرا (runtime image) پیوند دهید. .PP قالب فایل JMOD به شما امکان می‌دهد فایل‌هایی غیر از فایل‌های \f[CR].class\f[R]، متادیتا و منابع را تجمیع کنید. این قالب قابل‌حمل است اما قابل‌اجرا نیست، به این معنی که می‌توانید در زمان کامپایل یا زمان پیوند از آن استفاده کنید، اما نه در زمان اجرا. .PP بسیاری از گزینه‌های \f[CR]jmod\f[R] شامل تعیین مسیری هستند که محتویات آن در فایل‌های JMOD نهایی کپی می‌شوند. این گزینه‌ها تمام محتویات مسیر مشخص‌شده، شامل زیردایرکتوری‌ها و محتوای آن‌ها را کپی می‌کنند، اما فایل‌هایی را که نام آن‌ها با الگوی مشخص‌شده توسط گزینهٔ \f[CR]\-\-exclude\f[R] مطابقت دارد مستثنی می‌کنند. .PP با گزینهٔ \f[CR]\-\-hash\-modules\f[R] یا دستور \f[CR]jmod hash\f[R]، می‌توانید در توصیف‌گر هر ماژول، هش‌های محتوای ماژول‌هایی را که مجاز به وابستگی به آن هستند ثبت کنید، و بدین ترتیب این ماژول‌ها را به یکدیگر «پیوند» (tie) دهید. این قابلیت این امکان را فراهم می‌کند که از طریق برون‌ریزی‌های مشروط (qualified exports)، یک بسته فقط به یک یا چند ماژول با نام مشخص برون‌ریزی شود و نه به هیچ ماژول دیگری. محیط زمان اجرا بررسی می‌کند که آیا هش ثبت‌شدهٔ یک ماژول با هشی که در زمان اجرا حل‌وفصل شده است مطابقت دارد یا خیر؛ در غیر این صورت، زمان اجرا یک خطا برمی‌گرداند. .SH "گزینه‌های JMOD (OPTIONS FOR JMOD)" .TP \f[CR]\-\-class\-path\f[R] \f[I]path\f[R] مکان فایل‌های JAR برنامه یا دایرکتوری حاوی کلاس‌ها را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-cmds\f[R] \f[I]path\f[R] مکان دستورهای بومی را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-compress\f[R] \f[I]compress\f[R] میزان فشرده‌سازی مورد استفاده هنگام ایجاد فایل JMOD را مشخص می‌کند. مقادیر پذیرفته‌شده \f[CR]zip\-[0\-9]\f[R] هستند که در آن \f[CR]zip\-0\f[R] بدون فشرده‌سازی است، و \f[CR]zip\-9\f[R] بیشترین فشرده‌سازی را ارائه می‌دهد. پیش‌فرض \f[CR]zip\-6\f[R] است. .TP \f[CR]\-\-config\f[R] \f[I]path\f[R] مکان فایل‌های پیکربندی قابل ویرایش توسط کاربر را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-date\f[R]\f[I]TIMESTAMP\f[R] برچسب زمان در قالب تاریخ\-زمان با افست گسترش‌یافتهٔ ISO\-8601 همراه با قالب اختیاری منطقهٔ زمانی، برای استفاده به عنوان برچسب زمان مدخل‌ها؛ مانند: \(dq2022\-02\-12T12:30:00\-05:00\(dq. .TP \f[CR]\-\-dir\f[R] \f[I]path\f[R] مکانی را مشخص می‌کند که \f[CR]jmod\f[R] فایل‌های استخراج‌شده از آرشیو JMOD مشخص‌شده را در آن قرار می‌دهد. .TP \f[CR]\-\-dry\-run\f[R] یک اجرای آزمایشی (dry run) از حالت هش را انجام می‌دهد. این گزینه ماژول‌های برگ و ماژول‌های مورد نیاز آن‌ها را بدون ثبت مقادیر هش شناسایی می‌کند. .TP \f[CR]\-\-exclude\f[R] \f[I]pattern\-list\f[R] فایل‌های مطابق با فهرست الگوهای ارائه‌شده (جداشده با کاما) را مستثنی می‌کند؛ هر عنصر از یکی از قالب‌های زیر استفاده می‌کند: .RS .IP \(bu 2 \f[I]glob\-pattern\f[R] .IP \(bu 2 \f[CR]glob:\f[R]\f[I]glob\-pattern\f[R] .IP \(bu 2 \f[CR]regex:\f[R]\f[I]regex\-pattern\f[R] برای ساختار نحوی \f[I]glob\-pattern\f[R]، متد \f[B]\f[CB]FileSystem.getPathMatcher\f[B]\f[R] را ببینید. برای ساختار نحوی \f[I]regex\-pattern\f[R] که یک عبارت منظم را نشان می‌دهد، کلاس \f[B]\f[CB]Pattern\f[B]\f[R] را ببینید. .RE .TP \f[CR]\-\-hash\-modules\f[R] \f[I]regex\-pattern\f[R] بر اساس گراف ماژول‌های منطبق با \f[I]regex\-pattern\f[R] داده‌شده، ماژول‌های برگ را تعیین کرده و هش‌های وابستگی‌هایی را که به‌طور مستقیم یا غیرمستقیم به آن‌ها نیاز دارند ثبت می‌کند. هش‌ها در فایل آرشیو JMOD در حال ایجاد، یا یک آرشیو JMOD یا JAR ماژولار در مسیر ماژول که توسط دستور \f[CR]jmod hash\f[R] مشخص شده، ثبت می‌شوند. .TP \f[CR]\-\-header\-files\f[R] \f[I]path\f[R] مکان فایل‌های هدر را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-help\f[R] یا \f[CR]\-h\f[R] پیام راهنمای استفاده را چاپ می‌کند. .TP \f[CR]\-\-help\-extra\f[R] راهنمای گزینه‌های اضافی را چاپ می‌کند. .TP \f[CR]\-\-legal\-notices\f[R] \f[I]path\f[R] مکان اعلان‌های حقوقی را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-libs\f[R] \f[I]path\f[R] مکان کتابخانه‌های بومی را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-main\-class\f[R] \f[I]class\-name\f[R] کلاس اصلی را برای ثبت در فایل module\-info.class مشخص می‌کند. .TP \f[CR]\-\-man\-pages\f[R] \f[I]path\f[R] مکان صفحات راهنما را برای کپی شدن در فایل JMOD حاصل مشخص می‌کند. .TP \f[CR]\-\-module\-version\f[R] \f[I]module\-version\f[R] نسخهٔ ماژول را برای ثبت در فایل module\-info.class مشخص می‌کند. .TP \f[CR]\-\-module\-path\f[R] \f[I]path\f[R] یا \f[CR]\-p\f[R] \f[I]path\f[R] مسیر ماژول را مشخص می‌کند. اگر \f[CR]\-\-hash\-modules\f[R] را نیز مشخص کنید، این گزینه الزامی است. .TP \f[CR]\-\-target\-platform\f[R] \f[I]platform\f[R] سکوی مقصد را مشخص می‌کند. .TP \f[CR]\-\-version\f[R] اطلاعات نسخهٔ ابزار \f[CR]jmod\f[R] را چاپ می‌کند. .TP \f[CR]\(at\f[R]\f[I]filename\f[R] گزینه‌ها را از فایل مشخص‌شده می‌خواند. .RS فایل گزینه‌ها یک فایل متنی است که حاوی گزینه‌ها و مقادیری است که معمولاً در خط فرمان وارد می‌کنید. گزینه‌ها می‌توانند در یک خط یا در چند خط قرار گیرند. نمی‌توانید برای نام مسیرها از متغیرهای محیطی استفاده کنید. می‌توانید با قرار دادن یک نماد هش (\f[CR]#\f[R]) در ابتدای خط، خطوط را به توضیح تبدیل کنید. در زیر نمونه‌ای از یک فایل گزینه‌ها برای دستور \f[CR]jmod\f[R] آمده است: .IP .EX #Wed Dec 07 00:40:19 EST 2016 create \-\-class\-path mods/com.greetings \-\-module\-path mlib \-\-cmds commands \-\-config configfiles \-\-header\-files src/h \-\-libs lib \-\-main\-class com.greetings.Main \-\-man\-pages man \-\-module\-version 1.0 \-\-os\-arch \(dqx86_x64\(dq \-\-os\-name \(dqmacOS\(dq \-\-os\-version \(dq10.10.5\(dq greetingsmod .EE .RE.SH "گزینه‌های اضافی برای JMOD (EXTRA OPTIONS FOR JMOD)" علاوه بر گزینه‌های شرح‌داده‌شده در \f[B]گزینه‌های jmod\f[R]، موارد زیر گزینه‌های اضافی هستند که می‌توان همراه با این دستور استفاده کرد. .TP \f[CR]\-\-do\-not\-resolve\-by\-default\f[R] مستثنی کردن از مجموعه ریشه (root set) پیش‌فرض ماژول‌ها .TP \f[CR]\-\-warn\-if\-resolved\f[R] راهنمایی برای ابزار جهت صدور هشدار در صورتی که ماژول حل‌وفصل (resolve) شود. یکی از مقادیر deprecated، deprecated\-for\-removal یا incubating. .SH "مثال ایجاد JMOD (JMOD CREATE EXAMPLE)" در ادامه مثالی از ایجاد یک فایل JMOD آورده شده است: .IP .EX jmod create \-\-class\-path mods/com.greetings \-\-cmds commands \-\-config configfiles \-\-header\-files src/h \-\-libs lib \-\-main\-class com.greetings.Main \-\-man\-pages man \-\-module\-version 1.0 \-\-os\-arch \(dqx86_x64\(dq \-\-os\-name \(dqmacOS\(dq \-\-os\-version \(dq10.10.5\(dq greetingsmod .EE .PP ایجاد یک فایل JMOD با مشخص کردن تاریخ ورودی‌ها به صورت \f[CR]2022 March 15 00:00:00\f[R]: .IP .EX jmod create \-\-class\-path build/foo/classes \-\-date 2022\-03\-15T00:00:00Z jmods/foo1.jmod .EE .SH "مثال هش JMOD (JMOD HASH EXAMPLE)" مثال زیر نشان می‌دهد هنگامی که تلاش می‌کنید یک ماژول برگ (در این مثال، \f[CR]ma\f[R]) را با یک ماژول مورد نیاز (\f[CR]mb\f[R]) پیوند (link) دهید و مقدار هش ثبت‌شده در ماژول مورد نیاز با مقدار هش ماژول برگ مطابقت ندارد، چه اتفاقی رخ می‌دهد. .IP "1." 3 فایل‌های \f[CR].java\f[R] زیر را ایجاد و کامپایل کنید: .RS 4 .IP \(bu 2 \f[CR]jmodhashex/src/ma/module\-info.java\f[R] .RS 2 .IP .EX module ma { requires mb; } .EE .RE .IP \(bu 2 \f[CR]jmodhashex/src/mb/module\-info.java\f[R] .RS 2 .IP .EX module mb { } .EE .RE .IP \(bu 2 \f[CR]jmodhashex2/src/ma/module\-info.java\f[R] .RS 2 .IP .EX module ma { requires mb; } .EE .RE .IP \(bu 2 \f[CR]jmodhashex2/src/mb/module\-info.java\f[R] .RS 2 .IP .EX module mb { } .EE .RE .RE .IP "2." 3 برای هر ماژول یک آرشیو JMOD ایجاد کنید. دایرکتوری‌های \f[CR]jmodhashex/jmods\f[R] و \f[CR]jmodhashex2/jmods\f[R] را ایجاد کرده و سپس دستورهای زیر را ابتدا از دایرکتوری \f[CR]jmodhashex\f[R] و سپس از دایرکتوری \f[CR]jmodhashex2\f[R] اجرا کنید: .RS 4 .IP \(bu 2 \f[CR]jmod create \-\-class\-path mods/ma jmods/ma.jmod\f[R] .IP \(bu 2 \f[CR]jmod create \-\-class\-path mods/mb jmods/mb.jmod\f[R] .RE .IP "3." 3 به صورت اختیاری، پیش‌نمایشی از اجرای دستور \f[CR]jmod hash\f[R] را مشاهده کنید. دستور زیر را از دایرکتوری \f[CR]jmodhashex\f[R] اجرا کنید: .RS 4 .PP \f[CR]jmod hash \-\-dry\-run \-module\-path jmods \-\-hash\-modules .*\f[R] .PP دستور خروجی زیر را چاپ می‌کند: .IP .EX Dry run: mb hashes ma SHA\-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a .EE .PP این نشان می‌دهد که دستور \f[CR]jmod hash\f[R] (بدون گزینه \f[CR]\-\-dry\-run\f[R])، مقدار هش ماژول برگ \f[CR]ma\f[R] را در ماژول \f[CR]mb\f[R] ثبت خواهد کرد. .RE .IP "4." 3 ثبت مقادیر هش در فایل‌های آرشیو JMOD موجود در دایرکتوری \f[CR]jmodhashex\f[R]. دستور زیر را از دایرکتوری \f[CR]jmodhashex\f[R] اجرا کنید: .RS 4 .RS .PP \f[CR]jmod hash \-\-module\-path jmods \-\-hash\-modules .*\f[R] .RE .PP دستور خروجی زیر را چاپ می‌کند: .RS .PP \f[CR]Hashes are recorded in module mb\f[R] .RE .RE .IP "5." 3 چاپ اطلاعات مربوط به هر آرشیو JMOD موجود در دایرکتوری \f[CR]jmodhashex\f[R]. دستورهای زیر را از دایرکتوری \f[CR]jmodhashex\f[R] اجرا کنید: .RS 4 .IP .EX jmod describe jmods/ma.jmod ma requires mandated java.base requires mb jmod describe jmods/mb.jmod mb requires mandated java.base hashes ma SHA\-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a .EE .RE .IP "6." 3 تلاش برای ایجاد یک ایمیج زمان اجرا (runtime image) شامل ماژول \f[CR]ma\f[R] از دایرکتوری \f[CR]jmodhashex2\f[R]، اما ماژول \f[CR]mb\f[R] از دایرکتوری \f[CR]jmodhashex\f[R]. دستور زیر را از دایرکتوری \f[CR]jmodhashex2\f[R] اجرا کنید: .RS 4 .IP \(bu 2 \f[B]لینوکس و macOS:\f[R] .RS 2 .RS .PP \f[CR]jlink \-\-module\-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod \-\-add\-modules ma \-\-output ma\-app\f[R] .RE .RE .IP \(bu 2 \f[B]ویندوز:\f[R] .RS 2 .RS .PP \f[CR]jlink \-\-module\-path %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod \-\-add\-modules ma \-\-output ma\-app\f[R] .RE .RE .PP دستور پیامی خطایی مشابه مورد زیر چاپ می‌کند: .IP .EX Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb .EE .RE