.\" Automatically generated by Pandoc 3.10.2 .\" .TH "JMOD" "1" "2026" "JDK 26.0.2.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] برای بیشتر وظایف توسعه، از جمله استقرار ماژول‌ها در مسیر ماژول یا انتشار آن‌ها در یک مخزن Maven، همچنان ماژول‌ها را در فایل‌های JAR ماژولار بسته‌بندی کنید. ابزار \f[CR]jmod\f[R] برای ماژول‌هایی در نظر گرفته شده است که دارای کتابخانه‌های محلی (native) یا دیگر فایل‌های پیکربندی هستند، یا برای ماژول‌هایی که قصد دارید آن‌ها را با ابزار \f[B]jlink\f[R] به یک ایمیج زمان اجرا پیوند دهید. .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]، می‌توانید در توصیف‌گر هر ماژول، هش‌های محتوای ماژول‌هایی را که مجاز به وابستگی به آن هستند ثبت کنید و به این ترتیب این ماژول‌ها را به یکدیگر پیوند دهید. این ویژگی امکان می‌دهد تا یک بسته (package) از طریق صادرات مشروط (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] یک اجرای آزمایشی از حالت hash انجام می‌دهد. این گزینه ماژول‌های برگ و ماژول‌های مورد نیاز آن‌ها را بدون ثبت هیچ مقدار هشی شناسایی می‌کند. .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] مکان صفحه‌های man را برای کپی شدن در فایل 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] پلتفرم مقصد یک فایل JMOD در نظر گرفته‌شده برای یک سیستم‌عامل و معماری خاص را مشخص می‌کند. مقدار باید از قالب \f[CR]\-\f[R] پیروی کند، که در آن \f[CR]\f[R] سیستم‌عامل و \f[CR]\f[R] معماری سخت‌افزار است. مقادیر نمونه شامل \f[CR]linux\-amd64\f[R]، \f[CR]windows\-amd64\f[R] و \f[CR]macos\-aarch64\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 \-\-target\-platform \(dqmacos\-aarch64\(dq greetingsmod .EE .RE .SH "گزینه‌های اضافی برای JMOD (EXTRA OPTIONS FOR JMOD)" علاوه بر گزینه‌های شرح داده‌شده در \f[B]Options for jmod\f[R]، موارد زیر گزینه‌های اضافی هستند که می‌توان همراه با این دستور استفاده کرد. .TP \f[CR]\-\-do\-not\-resolve\-by\-default\f[R] مستثنی کردن از مجموعه ریشه پیش‌فرض ماژول‌ها .TP \f[CR]\-\-warn\-if\-resolved\f[R] راهنمایی برای ابزار جهت صدور هشدار در صورتی که ماژول تفکیک (resolve) شود. یکی از مقادیر deprecated، deprecated\-for\-removal یا incubating. .SH "مثال‌های JMOD CREATE (JMOD CREATE EXAMPLES)" ایجاد یک فایل JMOD که فقط شامل کلاس‌های کامپایل‌شده است: .IP .EX jmod create \-\-class\-path build/foo/classes jmods/foo1.jmod .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/foo2.jmod .EE .PP ایجاد یک فایل JMOD شامل کلاس‌های کامپایل‌شده، دستورهای بومی، فایل‌های پیکربندی، فایل‌های سرآیند (header files)، کتابخانه‌های بومی، صفحات man، و فراداده‌هایی شامل کلاس اصلی، نسخه ماژول و جزئیات پلتفرم مقصد: .IP .EX jmod create \-\-class\-path mods/com.greetings \-\-cmds commands \-\-config configfiles \-\-header\-files src/h \-\-libs lib \-\-man\-pages man \-\-main\-class com.greetings.Main \-\-module\-version 1.0 \-\-target\-platform \(dqmacos\-aarch64\(dq greetingsmod .EE .SH "مثال JMOD HASH (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]Linux و 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]Windows:\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