.\" Automatically generated by Pandoc 3.10.2 .\" .TH "JNATIVESCAN" "1" "2026" "JDK 25.0.4.1" "JDK Commands" .SH "نام (NAME)" jnativescan \- ابزار تحلیل ایستا برای پویش یک یا چند فایل jar جهت یافتن موارد استفاده از قابلیت‌های محلی (native)، مانند فراخوانی متدهای محدودشده یا اعلان متدهای \f[CR]native\f[R]. .SH "خلاصه دستور (SYNOPSIS)" \f[CR]jnativescan\f[R] [\f[I]گزینه‌ها\f[R]] .TP \f[I]گزینه‌ها\f[R] بخش \f[B]گزینه‌های دستور jnativescan\f[R] را مشاهده کنید. .SH "توضیحات (DESCRIPTION)" ابزار \f[CR]jnativescan\f[R] یک ابزار تحلیل ایستا ارائه‌شده توسط JDK است که یک فایل JAR را برای یافتن موارد استفاده از قابلیت‌های محلی (native)، از قبیل فراخوانی متدهای محدودشده یا اعلان‌های متد \f[CR]native\f[R] پویش می‌کند. .PP ابزار \f[CR]jnativescan\f[R] پیکربندی مسیر کلاس (class path) زمان اجرا و مسیر ماژول (module path)، مجموعه‌ای از ماژول‌های ریشه و یک نسخه انتشار هدف را دریافت می‌کند. این ابزار فایل‌های jar موجود در مسیرهای کلاس و ماژول را پویش کرده و استفاده از قابلیت‌های محلی را در ساختاری درختی (که کلاس‌ها و متدهای فراخواننده را نیز مشخص می‌کند) گزارش می‌دهد، یا در صورت تعیین سوییچ \f[CR]\-\-print\-native\-access\f[R]، آن‌ها را به‌صورت فهرستی از نام‌های ماژول‌ها نمایش می‌دهد. .SH "گزینه‌ها (OPTIONS)" گزینه‌های زیر در دسترس هستند: .TP \f[CR]\-\-class\-path\f[R] \f[I]path\f[R] برای تعیین فهرستی از مسیرهای اشاره‌کننده به فایل‌های jar جهت پویش به کار می‌رود. .PP تمام فایل‌های jar مشخص‌شده از طریق این فهرست پویش خواهند شد. اگر یک فایل jar در مانیفست خود حاوی ویژگی \f[CR]Class\-Path\f[R] باشد، فایل‌های jar فهرست‌شده در آن نیز پویش خواهند شد. فایل‌های jar موجود در ویژگی مانیفست \f[CR]Class\-Path\f[R] که یافت نشوند، نادیده گرفته می‌شوند. تمام فایل‌های jar یافت‌شده طوری در نظر گرفته می‌شوند که گویی متعلق به ماژول بدون نام (unnamed module) هستند. .TP \f[CR]\-\-module\-path\f[R] \f[I]path\f[R] برای تعیین فهرستی از مسیرهای اشاره‌کننده به فایل‌های jar یا دایرکتوری‌های حاوی فایل‌های jar به کار می‌رود که ابزار می‌تواند از آن‌ها برای یافتن ماژول‌های نیازمند پویش استفاده کند. فهرست فایل‌های jar که پویش خواهند شد به گزینه \f[CR]\-\-add\-modules\f[R] بستگی دارد. .RS برای هر دو گزینه \f[CR]\-\-class\-path\f[R] و \f[CR]\-\-module\-path\f[R]، مقدار \f[I]path\f[R] باید یک مسیر جستجو متشکل از یک یا چند فایل jar باشد که با جداکننده مسیر ویژه سیستم‌عامل از یکدیگر جدا شده‌اند. برای نمونه: .IP \(bu 2 \f[B]لینوکس و macOS:\f[R] .RS 2 .RS .PP \f[CR]\-\-class\-path /some/foo.jar:/another/different/bar.jar\f[R] .RE .RE \f[B]نکته:\f[R] در ویندوز، از نقطه ویرگول (\f[CR];\f[R]) به‌جای دو‌نقطه (\f[CR]:\f[R]) به عنوان جداکننده استفاده کنید. .IP \(bu 2 \f[B]ویندوز:\f[R] .RS 2 .RS .PP \f[CR]\-\-class\-path C:\(rssome\(rsfoo.jar;C:\(rsanother\(rsdifferent\(rsbar.jar\f[R] .RE .RE .RE .TP \f[CR]\-\-add\-modules\f[R] \f[I]module[,module...]\f[R] برای تعیین فهرستی از نام‌های ماژول‌ها که با کاما از هم جدا شده‌اند به کار می‌رود تا ماژول‌های ریشه برای پویش را مشخص کند. تمام ماژول‌های ریشه و نیز هر ماژولی که به آن‌ها وابسته‌اند، پویش خواهند شد. این شامل وابستگی‌ها به پیاده‌سازی‌های سرویس است که از طریق دستور \f[CR]uses\f[R] در فایل \f[CR]module\-info\f[R] ماژول مشخص شده‌اند. تمام ماژول‌های یافت‌شده در مسیر ماژول که پیاده‌سازی چنین سرویسی را ارائه می‌دهند نیز پویش خواهند شد. .TP \f[CR]\-\-release\f[R] \f[I]version\f[R] برای مشخص کردن نگارش Java SE به کار می‌رود که مجموعه متدهای محدودشده برای پویش را تعیین می‌کند. برای فایل‌های jar چندنسخه‌ای (multi\-release)، این گزینه همچنین نگارش فایل کلاسی را مشخص می‌کند که باید از فایل jar بارگذاری شود. این گزینه باید روی نگارشی از زمان اجرا تنظیم شود که برنامه در نهایت قرار است تحت آن اجرا گردد. اگر این سوییچ حذف شود، نگارش \f[CR]jnativescan\f[R] به عنوان نگارش انتشار استفاده خواهد شد که همان نگارش JDK متعلق به ابزار است. .TP \f[CR]\-\-print\-native\-access\f[R] چاپ فهرستی از نام‌های ماژول‌هایی که از قابلیت‌های محلی استفاده می‌کنند و با کاما جدا شده‌اند، به‌جای ساختار درختی پیش‌فرض. .TP \f[CR]\-\-help\f[R] یا \f[CR]\-h\f[R] پیام راهنمای کامل را چاپ می‌کند. .TP \f[CR]\-\-version\f[R] رشته نگارش مختصر ابزار را چاپ می‌کند. .SH "مثال‌ها (EXAMPLES)" ابزار \f[CR]jnativescan\f[R] یک پیکربندی زمان اجرا را در قالب مسیر کلاس، مسیر ماژول، مجموعه‌ای از ماژول‌های ریشه و یک نسخه انتشار هدف می‌پذیرد. برای مسیر کلاس، این ابزار تمام فایل‌های jar، از جمله مواردی را که به‌صورت بازگشتی از طریق ویژگی مانیفست \f[CR]Class\-Path\f[R] یافت می‌شوند، پویش می‌کند. برای مسیر ماژول، این ابزار تمام ماژول‌های ریشه مشخص‌شده از طریق \f[CR]\-\-add\-modules\f[R] و هرگونه وابستگی (انتقالی) ماژول‌های ریشه، شامل هر ماژولی که حاوی پیاده‌سازی سرویس‌های استفاده‌شده توسط ماژول پویش‌شده باشد را پویش می‌کند. .PP به‌طور پیش‌فرض، این ابزار مشخص می‌کند که کدام فایل‌های jar، کلاس‌ها و متدها از قابلیت‌های محلی استفاده می‌کنند و این اطلاعات را در ساختاری درختی نمایش می‌دهد. در زیر یک خروجی نمونه آورده شده است: .IP .EX $ jnativescan \-\-class\-path app.jar app.jar (ALL\-UNNAMED): foo.Main: foo.Main::main(String[])void references restricted methods: java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment foo.Main::nativeMethod()void is a native method declaration .EE .PP عبارت \f[CR]app.jar (ALL\-UNNAMED)\f[R] مسیر فایل jar است که نام ماژول در پرانتز پس از آن قرار دارد. از آنجا که در این حالت فایل jar در مسیر کلاس قرار دارد، عبارت \f[CR]ALL\-UNNAMED\f[R] برای نشان دادن ماژول بدون نام چاپ می‌شود. خط دوم خروجی، \f[CR]foo.Main\f[R]، نشان می‌دهد که متدهای استفاده‌کننده از قابلیت‌های محلی در کلاس \f[CR]foo.Main\f[R] یافت شده‌اند. خط بعدی: .IP .EX foo.Main::main(String[])void references restricted methods: .EE .PP نشان می‌دهد که متد \f[CR]main(String[])\f[R] در کلاس \f[CR]foo.Main\f[R] به یک متد محدودشده ارجاع دارد که در خط بعد به‌صورت زیر فهرست شده است: .IP .EX java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment .EE .PP در نهایت، متن: .IP .EX foo.Main::nativeMethod()void is a native method declaration .EE .PP نشان می‌دهد که کلاس \f[CR]foo.Main\f[R] شامل اعلان یک متد \f[CR]native\f[R] به نام \f[CR]nativeMethod\f[R] است. .PP اگر گزینه \f[CR]\-\-print\-native\-access\f[R] را به خط فرمان نمونه اضافه کنیم، در عوض فهرستی از نام‌های ماژول‌هایی دریافت می‌کنیم که حاوی دسترسی به قابلیت‌های محلی هستند: .IP .EX $ jnativescan \-\-class\-path app.jar \-\-print\-native\-access ALL\-UNNAMED .EE .PP در این حالت، خروجی فقط شامل \f[CR]ALL\-UNNAMED\f[R] است، که نشان می‌دهد یک فایل jar در مسیر کلاس، یعنی در ماژول بدون نام، حاوی دسترسی به قابلیت‌های محلی است.