| JMOD(1) | JDK Commands | JMOD(1) |
نام (NAME)
jmod - ایجاد فایلهای JMOD و فهرست کردن محتوای فایلهای JMOD موجود
خلاصه دستور (SYNOPSIS)
jmod (create|extract|list|describe|hash) [options] jmod-file
شامل موارد زیر است:
حالتهای اصلی عملیات
- create
- یک فایل آرشیو JMOD جدید ایجاد میکند.
- extract
- تمام فایلها را از فایل آرشیو JMOD استخراج میکند.
- list
- نام تمام مدخلها را چاپ میکند.
- describe
- جزئیات ماژول را چاپ میکند.
- hash
- ماژولهای برگ را تعیین کرده و هشهای وابستگیهایی را که بهطور مستقیم و غیرمستقیم به آنها نیاز دارند ثبت میکند.
گزینهها
- options
- بخش گزینههای JMOD را ببینید.
ضروری
- jmod-file
- نام فایل JMOD را برای ایجاد یا بازیابی اطلاعات از آن مشخص میکند.
توضیحات (DESCRIPTION)
نکته: برای بیشتر وظایف توسعه، از جمله استقرار ماژولها در مسیر ماژول یا انتشار آنها در یک مخزن Maven، همچنان ماژولها را در فایلهای JAR ماژولار بستهبندی کنید. ابزار jmod برای ماژولهایی در نظر گرفته شده است که دارای کتابخانههای محلی (native) یا دیگر فایلهای پیکربندی هستند، یا برای ماژولهایی که قصد دارید آنها را با ابزار jlink به یک ایمیج زمان اجرا پیوند دهید.
قالب فایل JMOD به شما امکان میدهد فایلهایی غیر از فایلهای .class، فرادادهها و منابع را تجمیع کنید. این قالب قابلانتقال اما غیرقابلاجرا است؛ به این معنی که میتوانید در زمان کامپایل یا زمان پیوند از آن استفاده کنید، اما نه در زمان اجرا.
بسیاری از گزینههای jmod شامل مشخص کردن مسیری هستند که محتویات آن در فایلهای JMOD حاصل کپی میشود. این گزینهها تمام محتویات مسیر مشخصشده، از جمله زیرپوشهها و محتویات آنها را کپی میکنند، اما فایلهایی را که نام آنها با الگوی مشخصشده توسط گزینهٔ --exclude مطابقت دارد، مستثنی میکنند.
با گزینهٔ --hash-modules یا دستور jmod hash، میتوانید در توصیفگر هر ماژول، هشهای محتوای ماژولهایی را که مجاز به وابستگی به آن هستند ثبت کنید و به این ترتیب این ماژولها را به یکدیگر پیوند دهید. این ویژگی امکان میدهد تا یک بسته (package) از طریق صادرات مشروط (qualified exports) تنها به یک یا چند ماژول با نام مشخص و نه به هیچ ماژول دیگری صادر شود. محیط زمان اجرا بررسی میکند که آیا هش ثبتشدهٔ یک ماژول با هش حلشده در زمان اجرا مطابقت دارد یا خیر؛ در غیر این صورت، زمان اجرا یک خطا بازمیگرداند.
گزینههای JMOD (OPTIONS FOR JMOD)
- --class-path path
- مکان فایلهای JAR برنامه یا پوشهای حاوی کلاسها را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --cmds path
- مکان دستورهای محلی را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --compress compress
- میزان فشردهسازی مورد استفاده در ایجاد فایل JMOD را مشخص میکند. مقادیر پذیرفتهشده zip-[0-9] هستند که در آن zip-0 هیچ فشردهسازی انجام نمیدهد و zip-9 بهترین فشردهسازی را ارائه میدهد. پیشفرض zip-6 است.
- --config path
- مکان فایلهای پیکربندی قابلویرایش توسط کاربر را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --dateTIMESTAMP
- برچسب زمانی با قالب تاریخ-زمان گسترشیافته با آفست ISO-8601 و منطقهٔ زمانی اختیاری، برای استفاده به عنوان برچسب زمانی ورودیها؛ برای نمونه "2022-02-12T12:30:00-05:00".
- --dir path
- مکانی را مشخص میکند که jmod فایلهای استخراجشده از آرشیو JMOD مشخصشده را در آن قرار میدهد.
- --dry-run
- یک اجرای آزمایشی از حالت hash انجام میدهد. این گزینه ماژولهای برگ و ماژولهای مورد نیاز آنها را بدون ثبت هیچ مقدار هشی شناسایی میکند.
- --exclude pattern-list
- فایلهای مطابق با فهرست الگوهای ارائهشده (جداشده با کاما) را مستثنی میکند؛ هر عنصر از یکی از قالبهای زیر استفاده میکند:
- glob-pattern
- glob:glob-pattern
- regex:regex-pattern برای نحوِ glob-pattern به متد FileSystem.getPathMatcher مراجعه کنید. برای نحوِ regex-pattern که بیانگر یک عبارت باقاعده است، به کلاس Pattern مراجعه کنید.
- --hash-modules regex-pattern
- بر اساس گراف ماژول برای ماژولهای منطبق با regex-pattern دادهشده، ماژولهای برگ را تعیین کرده و هشهای وابستگیهایی را که بهطور مستقیم یا غیرمستقیم به آنها نیاز دارند ثبت میکند. هشها در فایل آرشیو JMOD در حال ایجاد، یا در یک آرشیو JMOD یا JAR ماژولار در مسیر ماژول مشخصشده توسط دستور jmod hash ثبت میشوند.
- --header-files path
- مکان فایلهای سرآیند را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --help یا -h
- پیام راهنمای استفاده را چاپ میکند.
- --help-extra
- راهنمای گزینههای اضافی را چاپ میکند.
- --legal-notices path
- مکان اطلاعیههای حقوقی را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --libs path
- مکان کتابخانههای محلی را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --main-class class-name
- کلاس اصلی را برای ثبت در فایل module-info.class مشخص میکند.
- --man-pages path
- مکان صفحههای man را برای کپی شدن در فایل JMOD حاصل مشخص میکند.
- --module-version module-version
- نسخهٔ ماژول را برای ثبت در فایل module-info.class مشخص میکند.
- --module-path path یا -p path
- مسیر ماژول را مشخص میکند. در صورتی که --hash-modules را نیز مشخص کرده باشید، این گزینه الزامی است.
- --target-platform platform
- پلتفرم مقصد یک فایل JMOD در نظر گرفتهشده برای یک سیستمعامل و معماری خاص را مشخص میکند. مقدار باید از قالب <os>-<arch> پیروی کند، که در آن <os> سیستمعامل و <arch> معماری سختافزار است. مقادیر نمونه شامل linux-amd64، windows-amd64 و macos-aarch64 هستند.
- --version
- اطلاعات نسخهٔ ابزار jmod را چاپ میکند.
- @filename
- گزینهها را از فایل مشخصشده میخواند.
#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 "macos-aarch64" greetingsmod
گزینههای اضافی برای JMOD (EXTRA OPTIONS FOR JMOD)
علاوه بر گزینههای شرح دادهشده در Options for jmod، موارد زیر گزینههای اضافی هستند که میتوان همراه با این دستور استفاده کرد.
- --do-not-resolve-by-default
- مستثنی کردن از مجموعه ریشه پیشفرض ماژولها
- --warn-if-resolved
- راهنمایی برای ابزار جهت صدور هشدار در صورتی که ماژول تفکیک (resolve) شود. یکی از مقادیر deprecated، deprecated-for-removal یا incubating.
مثالهای JMOD CREATE (JMOD CREATE EXAMPLES)
ایجاد یک فایل JMOD که فقط شامل کلاسهای کامپایلشده است:
-
jmod create --class-path build/foo/classes jmods/foo1.jmod
ایجاد یک فایل JMOD با تعیین تاریخ ورودیها به صورت 2022 March 15 00:00:00:
-
jmod create --class-path build/foo/classes --date 2022-03-15T00:00:00Z jmods/foo2.jmod
ایجاد یک فایل JMOD شامل کلاسهای کامپایلشده، دستورهای بومی، فایلهای پیکربندی، فایلهای سرآیند (header files)، کتابخانههای بومی، صفحات man، و فرادادههایی شامل کلاس اصلی، نسخه ماژول و جزئیات پلتفرم مقصد:
-
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 "macos-aarch64" greetingsmod
مثال JMOD HASH (JMOD HASH EXAMPLE)
مثال زیر نشان میدهد چه اتفاقی میافتد هنگامی که تلاش میکنید یک ماژول برگ (در این مثال، ma) را با یک ماژول مورد نیاز (mb) پیوند (link) دهید، در حالی که مقدار هش ثبتشده در ماژول مورد نیاز با مقدار هش ماژول برگ مطابقت ندارد.
- 1.
- فایلهای .java زیر را ایجاد و کامپایل کنید:
- •
- jmodhashex/src/ma/module-info.java
-
module ma { requires mb; }
- •
- jmodhashex/src/mb/module-info.java
-
module mb { }
- •
- jmodhashex2/src/ma/module-info.java
-
module ma { requires mb; }
- •
- jmodhashex2/src/mb/module-info.java
-
module mb { }
- 2.
- برای هر ماژول یک آرشیو JMOD ایجاد کنید. دایرکتوریهای jmodhashex/jmods و jmodhashex2/jmods را بسازید و سپس دستورهای زیر را ابتدا از دایرکتوری jmodhashex و سپس از دایرکتوری jmodhashex2 اجرا کنید:
- jmod create --class-path mods/ma jmods/ma.jmod
- jmod create --class-path mods/mb jmods/mb.jmod
- 3.
- بهصورت اختیاری دستور jmod hash را پیشنمایش کنید. دستور زیر را از دایرکتوری jmodhashex اجرا کنید:
jmod hash --dry-run -module-path jmods --hash-modules .*
دستور خروجی زیر را چاپ میکند:
-
Dry run: mb hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
این نشان میدهد که دستور jmod hash (بدون گزینهٔ --dry-run) مقدار هش ماژول برگ ma را در ماژول mb ثبت خواهد کرد.
- 4.
- مقادیر هش را در فایلهای آرشیو JMOD موجود در دایرکتوری jmodhashex ثبت کنید. دستور زیر را از دایرکتوری jmodhashex اجرا کنید:
jmod hash --module-path jmods --hash-modules .*
دستور خروجی زیر را چاپ میکند:
Hashes are recorded in module mb
- 5.
- اطلاعات مربوط به هر آرشیو JMOD موجود در دایرکتوری jmodhashex را چاپ کنید. دستورهای مشخصشده را از دایرکتوری jmodhashex اجرا کنید:
-
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
- 6.
- برای ایجاد یک ایمیج زمان اجرا (runtime image) تلاش کنید که شامل ماژول ma از دایرکتوری jmodhashex2، اما ماژول mb از دایرکتوری jmodhashex باشد. دستور زیر را از دایرکتوری jmodhashex2 اجرا کنید:
- •
- Linux و macOS:
jlink --module-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app
- •
- Windows:
jlink --module-path %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app
-
Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb
| 2026 | JDK 26.0.2.1 |