| JAVAP(1) | JDK Commands | JAVAP(1) |
نام (NAME)
javap-openjdk25 - دیساسمبل کردن یک یا چند فایل کلاس جاوا
خلاصه دستور (SYNOPSIS)
javap [options] classes...
- options
- گزینههای خط فرمان را مشخص میکند. بخش گزینههای JAVAP را ببینید.
- classes
- یک یا چند کلاس جداشده با فاصله را برای پردازش حاشیهنویسیها (annotations) مشخص میکند. میتوانید کلاسی را که در مسیر کلاس (class path) قابل یافتن است، با نام فایل، نشانی وب (URL) یا نام کامل کلاس (fully qualified class name) مشخص کنید.
path/to/MyClass.class
jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class
java.lang.Object
توضیحات (DESCRIPTION)
دستور javap یک یا چند فایل کلاس را دیساسمبل میکند. خروجی به گزینههای استفادهشده بستگی دارد. هنگامی که از هیچ گزینهای استفاده نشود، دستور javap فیلدها و متدهای عمومی (public) و محافظتشده (protected) کلاسهای ارائهشده به آن را چاپ میکند.
دستور javap از فایلهای JAR چندنسخهای (multirelease) پشتیبانی نمیکند. استفاده از شکل مسیر کلاس (class path) در این دستور منجر به مشاهده مدخل پایه (base entry) در تمام فایلهای JAR میشود، چه چندنسخهای باشند و چه نباشند. با استفاده از شکل نشانی وب (URL)، میتوانید نسخه خاصی از یک کلاس را برای دیساسمبل شدن تعیین کنید.
دستور javap خروجی خود را در stdout چاپ میکند.
نکته:
در ابزارهایی که از گزینههای به سبک -- پشتیبانی میکنند، گزینههای به سبک گنو (GNU) میتوانند به جای فاصله، از علامت مساوی (=) برای جداسازی نام گزینه از مقدار آن استفاده کنند.
گزینههای JAVAP (OPTIONS FOR JAVAP)
- --help، -help، -h یا -?
- پیام راهنما را برای دستور javap چاپ میکند.
- -version
- اطلاعات نسخه انتشار را چاپ میکند.
- -verbose یا -v
- اطلاعات تکمیلی و بیشتری را درباره کلاس انتخابشده چاپ میکند.
- -l
- جدولهای شماره خط و متغیرهای محلی را چاپ میکند.
- -public
- تنها کلاسها و اعضای عمومی (public) را نمایش میدهد.
- -protected
- تنها کلاسها و اعضای محافظتشده (protected) و عمومی (public) را نمایش میدهد.
- -package
- کلاسها و اعضای بسته/محافظتشده/عمومی را نمایش میدهد (پیشفرض).
- -private یا -p
- تمام کلاسها و اعضا را نمایش میدهد.
- -c
- کد دیساسمبلشده (به عنوان مثال، دستوراتی که بایتکدهای جاوا را تشکیل میدهند) را برای هر یک از متدهای کلاس چاپ میکند.
- -s
- امضاهای داخلی نوع (internal type signatures) را چاپ میکند.
- -sysinfo
- اطلاعات سیستمی (مسیر، اندازه، تاریخ و هش SHA-256) کلاس در حال پردازش را نمایش میدهد.
- -verify
- اطلاعات اعتبارسنجی تکمیلی کلاس را چاپ میکند.
- -constants
- ثابتهای static final را نمایش میدهد.
- --module module یا -m module
- پیمانهای که کلاسهای مورد نظر برای دیساسمبل شدن در آن قرار دارند را مشخص میکند.
- --module-path path
- محل یافتن پیمانههای برنامه را مشخص میکند.
- --system jdk
- محل یافتن پیمانههای سیستمی را مشخص میکند.
- --class-path path، -classpath path یا -cp path
- مسیری را مشخص میکند که دستور javap برای یافتن فایلهای کلاس کاربر از آن استفاده میکند. این گزینه در صورت تنظیم بودن، مقدار پیشفرض یا متغیر محیطی CLASSPATH را بازنویسی میکند.
- -bootclasspath path
- مکان فایلهای کلاس راهانداز (bootstrap) را بازنویسی میکند.
- --multi-release version
- نسخه مورد نظر را برای انتخاب در فایلهای JAR چندنسخهای مشخص میکند.
- -Joption
- گزینه مشخصشده را به ماشین مجازی جاوا (JVM) ارسال میکند. برای مثال:
-
javap -J-version javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName
بخش Overview of Java Options در صفحه راهنمای java را ببینید.
مثالهای JAVAP (EXAMPLES)
کلاس HelloWorldFrame زیر را کامپایل کنید:
-
import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class HelloWorldFrame extends JFrame { String message = "Hello World!"; public HelloWorldFrame(){ setContentPane(new JPanel(){ @Override protected void paintComponent(Graphics g) { g.drawString(message, 15, 30); } }); setSize(100, 100); } public static void main(String[] args) { HelloWorldFrame frame = new HelloWorldFrame(); frame.setVisible(true); } }
خروجی حاصل از دستور javap HelloWorldFrame.class به صورت زیر خواهد بود:
-
Compiled from "HelloWorldFrame.java" public class HelloWorldFrame extends javax.swing.JFrame { java.lang.String message; public HelloWorldFrame(); public static void main(java.lang.String[]); }
خروجی حاصل از دستور javap -c HelloWorldFrame.class به صورت زیر خواهد بود:
-
Compiled from "HelloWorldFrame.java" public class HelloWorldFrame extends javax.swing.JFrame { java.lang.String message; public HelloWorldFrame(); Code: 0: aload_0 1: invokespecial #1 // Method javax/swing/JFrame."<init>":()V 4: aload_0 5: ldc #2 // String Hello World! 7: putfield #3 // Field message:Ljava/lang/String; 10: aload_0 11: new #4 // class HelloWorldFrame$1 14: dup 15: aload_0 16: invokespecial #5 // Method HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V 19: invokevirtual #6 // Method setContentPane:(Ljava/awt/Container;)V 22: aload_0 23: bipush 100 25: bipush 100 27: invokevirtual #7 // Method setSize:(II)V 30: return public static void main(java.lang.String[]); Code: 0: new #8 // class HelloWorldFrame 3: dup 4: invokespecial #9 // Method "<init>":()V 7: astore_1 8: aload_1 9: iconst_1 10: invokevirtual #10 // Method setVisible:(Z)V 13: return }
| 2026 | JDK 25.0.4.1 |