JAVAP(1) JDK Commands JAVAP(1) نام (NAME) javap - دیس‌اسمبل کردن یک یا چند فایل کلاس خلاصه دستور (SYNOPSIS) javap [options] classes... options گزینه‌های خط فرمان را مشخص می‌کند. بخش گزینه‌های JAVAP (OPTIONS FOR 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 فیلدها و متدهای محافظت‌شده (protected) و عمومی (public) کلاس‌های ارائه‌شده به آن را چاپ می‌کند. دستور javap قابلیت تشخیص فایل‌های JAR چندانتشاره (multi-release) را ندارد. استفاده از حالت مسیر کلاس (class path) در این دستور منجر به مشاهده مدخل پایه در همه فایل‌های JAR، چه چندانتشاره و چه عادی، می‌شود. با استفاده از قالب URL برای یک آرگومان، می‌توانید نسخه مشخصی از یک کلاس را برای دیس‌اسمبل شدن تعیین کنید. دستور javap خروجی خود را در stdout چاپ می‌کند. نکته: در ابزارهایی که از گزینه‌های سبک -- پشتیبانی می‌کنند، گزینه‌های سبک گنو (GNU-style) می‌توانند به جای فاصله، از علامت مساوی (=) برای جداسازی نام گزینه از مقدار آن استفاده کنند. گزینه‌های JAVAP (OPTIONS FOR JAVAP) --help، -help، -h یا -? پیام راهنما را برای دستور javap چاپ می‌کند. -version اطلاعات نسخه انتشار را چاپ می‌کند. -verbose یا -v اطلاعات بیشتری را درباره کلاس انتخاب‌شده چاپ می‌کند. -l جدول‌های شماره خط و متغیرهای محلی را چاپ می‌کند. -public تنها کلاس‌ها و اعضای عمومی (public) را نشان می‌دهد. -protected تنها کلاس‌ها و اعضای محافظت‌شده (protected) و عمومی (public) را نشان می‌دهد. -package کلاس‌ها و اعضای بسته‌ای/محافظت‌شده/عمومی (package/protected/public) را نشان می‌دهد (پیش‌فرض). -private یا -p تمام کلاس‌ها و اعضا را نشان می‌دهد. -c کد دیس‌اسمبل شده، برای مثال دستورالعمل‌هایی که بایت‌کدهای جاوا را تشکیل می‌دهند، برای هر یک از متدهای کلاس چاپ می‌کند. -s امضاهای داخلی نوع داده (internal type signatures) را چاپ می‌کند. -sysinfo اطلاعات سیستمی (مسیر، اندازه، تاریخ، هش SHA-256) کلاس در حال پردازش را نشان می‌دهد. -verify اطلاعات تکمیلی راستی‌آزمایی کلاس (verification) را چاپ می‌کند. -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 (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."":()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."":(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 "":()V 7: astore_1 8: aload_1 9: iconst_1 10: invokevirtual #10 // Method setVisible:(Z)V 13: return } JDK 26.0.2.1 2026 JAVAP(1)