javap(1) Basic Tools javap(1) نام (NAME) javap - دیس‌اسمبل کردن یک یا چند فایل class. خلاصه دستور (SYNOPSIS) javap [options] classfile... options گزینه‌های خط فرمان. بخش گزینه‌ها را ببینید. classfile یک یا چند کلاس جدا شده با فاصله برای پردازش حاشیه‌نویسی‌ها (annotations) مانند DocFooter.class. می‌توانید کلاسی را که در مسیر کلاس (class path) قابل یافتن است، با نام فایل آن یا با یک URL مانند file:///home/user/myproject/src/DocFooter.class مشخص کنید. توضیحات (DESCRIPTION) دستور javap یک یا چند فایل class را دیس‌اسمبل می‌کند. خروجی به گزینه‌های استفاده‌شده بستگی دارد. هنگامی که از هیچ گزینه‌ای استفاده نشود، دستور javap بسته (package)، فیلدهای محافظت‌شده (protected) و عمومی (public)، و متدهای کلاس‌های ارائه‌شده به آن را چاپ می‌کند. دستور javap خروجی خود را در stdout چاپ می‌کند. گزینه‌ها (OPTIONS) -help --help -? پیام راهنمای دستور javap را چاپ می‌کند. -version اطلاعات نسخه انتشار را چاپ می‌کند. -l جدول‌های خط و متغیرهای محلی را چاپ می‌کند. -public تنها کلاس‌ها و اعضای عمومی (public) را نمایش می‌دهد. -protected تنها کلاس‌ها و اعضای محافظت‌شده (protected) و عمومی را نمایش می‌دهد. -private -p تمام کلاس‌ها و اعضا را نمایش می‌دهد. -Joption گزینهٔ مشخص‌شده را به JVM ارسال می‌کند. برای مثال: javap -J-version javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName برای اطلاعات بیشتر درباره گزینه‌های JVM، مستندات دستور را ببینید. -s امضاهای داخلی نوع (type signatures) را چاپ می‌کند. -sysinfo اطلاعات سیستمی (مسیر، اندازه، تاریخ، هش MD5) کلاسی را که در حال پردازش است نمایش می‌دهد. -constants ثابت‌های static final را نمایش می‌دهد. -c کد دیس‌اسمبل‌شده، به عنوان مثال دستورالعمل‌هایی که بایت‌کدهای جاوا را تشکیل می‌دهند، برای هر یک از متدهای کلاس چاپ می‌کند. -verbose اندازه پشته (stack size)، تعداد متغیرهای محلی و آرگومان‌های متدها را چاپ می‌کند. -classpath path مسیری را که دستور javap برای جستجوی کلاس‌ها استفاده می‌کند مشخص می‌سازد. در صورت تنظیم بودن، بر مقدار پیش‌فرض یا متغیر محیطی CLASSPATH مقدم می‌شود. -bootclasspath path مسیری را مشخص می‌کند که کلاس‌های راه‌انداز (bootstrap) از آن بارگذاری شوند. به‌طور پیش‌فرض، کلاس‌های bootstrap کلاس‌هایی هستند که پلتفرم اصلی جاوا را پیاده‌سازی کرده و در jre/lib/rt.jar و چند فایل JAR دیگر قرار دارند. -extdir dirs مکانی را که افزونه‌های نصب‌شده در آن جستجو می‌شوند، بازنویسی می‌کند. مکان پیش‌فرض برای افزونه‌ها مقدار java.ext.dirs است. مثال‌ها (EXAMPLES) کلاس DocFooter زیر را کامپایل کنید: import java.awt.*; import java.applet.*; public class DocFooter extends Applet { String date; String email; public void init() { resize(500,100); date = getParameter("LAST_UPDATED"); email = getParameter("EMAIL"); } public void paint(Graphics g) { g.drawString(date + " by ",100, 15); g.drawString(email,290,15); } } خروجی حاصل از دستور javap DocFooter.class به صورت زیر است: Compiled from "DocFooter.java" public class DocFooter extends java.applet.Applet { java.lang.String date; java.lang.String email; public DocFooter(); public void init(); public void paint(java.awt.Graphics); } خروجی حاصل از دستور javap -c DocFooter.class به صورت زیر است: Compiled from "DocFooter.java" public class DocFooter extends java.applet.Applet { java.lang.String date; java.lang.String email; public DocFooter(); Code: 0: aload_0 1: invokespecial #1 // Method java/applet/Applet."":()V 4: return public void init(); Code: 0: aload_0 1: sipush 500 4: bipush 100 6: invokevirtual #2 // Method resize:(II)V 9: aload_0 10: aload_0 11: ldc #3 // String LAST_UPDATED 13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; 16: putfield #5 // Field date:Ljava/lang/String; 19: aload_0 20: aload_0 21: ldc #6 // String EMAIL 23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; 26: putfield #7 // Field email:Ljava/lang/String; 29: return public void paint(java.awt.Graphics); Code: 0: aload_1 1: new #8 // class java/lang/StringBuilder 4: dup 5: invokespecial #9 // Method java/lang/StringBuilder."":()V 8: aload_0 9: getfield #5 // Field date:Ljava/lang/String; 12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 15: ldc #11 // String by 17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; 23: bipush 100 25: bipush 15 27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V 30: aload_1 31: aload_0 32: getfield #7 // Field email:Ljava/lang/String; 35: sipush 290 38: bipush 15 40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V 43: return } همچنین ببینید (SEE ALSO) • java(1) • javac(1) • javadoc(1) • jdb(1) • jdeps(1) JDK 8 8 August 2014 javap(1)