1 '\" t 2 .\" Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. 3 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 .\" 5 .\" This code is free software; you can redistribute it and/or modify it 6 .\" under the terms of the GNU General Public License version 2 only, as 7 .\" published by the Free Software Foundation. 8 .\" 9 .\" This code is distributed in the hope that it will be useful, but WITHOUT 10 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 .\" version 2 for more details (a copy is included in the LICENSE file that 13 .\" accompanied this code). 14 .\" 15 .\" You should have received a copy of the GNU General Public License version 16 .\" 2 along with this work; if not, write to the Free Software Foundation, 17 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 .\" 19 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 .\" or visit www.oracle.com if you need additional information or have any 21 .\" questions. 22 .\" ` 23 '\"macro stdmacro 24 .TH javap 1 "05 Jul 2012" 25 .SH "名前" 26 javap \- Java クラスファイル逆アセンブラ 27 .LP 28 29 .LP 30 .LP 31 クラスファイルを逆アセンブルします。 32 .LP 33 .\" 34 .\" This document was created by saving an HTML file as text 35 .\" from the JavaSoft web site: 36 .\" 37 .\" http://java.sun.com/products/jdk/1.2/docs/tooldocs/tools.html 38 .\" 39 .\" and adding appropriate troff macros. Because the JavaSoft web site 40 .\" man pages can change without notice, it may be helpful to diff 41 .\" files to identify changes other than new functionality. 42 .\" 43 .SH "形式" 44 .B javap 45 [ 46 .B options 47 ] 48 .IR class .\|.\|. 49 .SH "機能説明" 50 .IX "Java class file disassembler" "" "Java class file disassembler \(em \fLjavap\fP" 51 .IX "javap" "" "\fLjavap\fP \(em Java class file disassembler" 52 .B javap 53 コマンドは、 54 Java クラスファイルを逆アセンブルします。 55 出力内容はオプションで指定します。 56 オプションを 57 1 58 つも指定しないと、 59 .B javap 60 は渡されたクラスの 61 .BR package、 62 .BR protected、 63 および 64 .B public 65 フィールドとメソッドを出力します。 66 .B javap 67 コマンドの出力先は 68 .B stdout 69 です。たとえば、以下のクラス宣言をコンパイルします。 70 .RS 71 .nf 72 \f3 73 import java.awt.*; 74 import java.applet.*; 75 76 public class DocFooter extends Applet { 77 String date; 78 String email; 79 80 public void init() { 81 resize(500,100); 82 date = getParameter("LAST_UPDATED"); 83 email = getParameter("EMAIL"); 84 } 85 86 public void paint(Graphics g) { 87 g.drawString(date + " by ",100, 15); 88 g.drawString(email,290,15); 89 } 90 } 91 \f1 92 .fi 93 .RE 94 .LP 95 この場合、 96 .B javap DocFooter 97 を実行すると以下の出力が得られます。 98 .RS 99 \f3 100 .nf 101 Compiled from DocFooter.java 102 public class DocFooter extends java.applet.Applet { 103 java.lang.String date; 104 java.lang.String email; 105 public void init(); 106 public void paint(java.awt.Graphics); 107 public DocFooter(); 108 } 109 \f1 110 .fi 111 .LP 112 \f3javap \-c DocFooter\fP を実行すると以下の出力が得られます。 113 .LP 114 .RS 3 115 116 .LP 117 .nf 118 \f3 119 .fl 120 Compiled from DocFooter.java 121 .fl 122 public class DocFooter extends java.applet.Applet { 123 .fl 124 java.lang.String date; 125 .fl 126 java.lang.String email; 127 .fl 128 public DocFooter(); 129 .fl 130 public void init(); 131 .fl 132 public void paint(java.awt.Graphics); 133 .fl 134 } 135 .fl 136 137 .fl 138 Method DocFooter() 139 .fl 140 0 aload_0 141 .fl 142 1 invokespecial #1 <Method java.applet.Applet()> 143 .fl 144 4 return 145 .fl 146 147 .fl 148 Method void init() 149 .fl 150 0 aload_0 151 .fl 152 1 sipush 500 153 .fl 154 4 bipush 100 155 .fl 156 6 invokevirtual #2 <Method void resize(int, int)> 157 .fl 158 9 aload_0 159 .fl 160 10 aload_0 161 .fl 162 11 ldc #3 <String "LAST_UPDATED"> 163 .fl 164 13 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)> 165 .fl 166 16 putfield #5 <Field java.lang.String date> 167 .fl 168 19 aload_0 169 .fl 170 20 aload_0 171 .fl 172 21 ldc #6 <String "EMAIL"> 173 .fl 174 23 invokevirtual #4 <Method java.lang.String getParameter(java.lang.String)> 175 .fl 176 26 putfield #7 <Field java.lang.String email> 177 .fl 178 29 return 179 .fl 180 181 .fl 182 Method void paint(java.awt.Graphics) 183 .fl 184 0 aload_1 185 .fl 186 1 new #8 <Class java.lang.StringBuffer> 187 .fl 188 4 dup 189 .fl 190 5 invokespecial #9 <Method java.lang.StringBuffer()> 191 .fl 192 8 aload_0 193 .fl 194 9 getfield #5 <Field java.lang.String date> 195 .fl 196 12 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)> 197 .fl 198 15 ldc #11 <String " by "> 199 .fl 200 17 invokevirtual #10 <Method java.lang.StringBuffer append(java.lang.String)> 201 .fl 202 20 invokevirtual #12 <Method java.lang.String toString()> 203 .fl 204 23 bipush 100 205 .fl 206 25 bipush 15 207 .fl 208 27 invokevirtual #13 <Method void drawString(java.lang.String, int, int)> 209 .fl 210 30 aload_1 211 .fl 212 31 aload_0 213 .fl 214 32 getfield #7 <Field java.lang.String email> 215 .fl 216 35 sipush 290 217 .fl 218 38 bipush 15 219 .fl 220 40 invokevirtual #13 <Method void drawString(java.lang.String, int, int)> 221 .fl 222 43 return 223 .fl 224 \fP 225 .fi 226 .RE 227 228 .LP 229 .SH "オプション" 230 .LP 231 232 .LP 233 .TP 3 234 \-help 235 \f3javap\fP のヘルプメッセージを出力します。 236 .TP 3 237 \-l 238 行番号と局所変数テーブルを表示します。 239 .TP 3 240 \-b 241 JDK 1.1 の \f3javap\fP との下位互換性を保証します。 242 .TP 3 243 \-public 244 public クラスおよびメンバだけを表示します。 245 .TP 3 246 \-protected 247 protected および public のクラスとメンバだけを表示します。 248 .TP 3 249 \-package 250 package、protected、および public のクラスとメンバだけを表示します。これはデフォルトの設定です。 251 .TP 3 252 \-private 253 すべてのクラスとメンバを表示します。 254 .TP 3 255 \-Jflag 256 ランタイムシステムに直接 \f2flag\fP を渡します。使用例を次に示します。 257 .RS 3 258 259 .LP 260 .nf 261 \f3 262 .fl 263 javap \-J\-version 264 .fl 265 javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassName 266 .fl 267 \fP 268 .fi 269 .RE 270 .TP 3 271 \-s 272 内部の型シグニチャーを出力します。 273 .TP 3 274 \-c 275 クラスの各メソッドのために逆アセンブルされるコード、すなわち Java バイトコードから成る命令を表示します。これらは 276 .fi 277 http://docs.oracle.com/javase/specs/ 278 の 279 .na 280 「\f2Java Virtual Machine Specification\fP」にドキュメント化されています。 281 .TP 3 282 \-verbose 283 メソッドのスタックサイズ、および \f2locals\fP と \f2args\fP の数を出力します。 284 .TP 3 285 \-classpath path 286 \f3javap\fP がクラスを探すために使用するパスを指定します。デフォルトまたは CLASSPATH 環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fP の一般形式は次のようになります。 287 .nf 288 \f3 289 .fl 290 .:<your_path> 291 .fl 292 \fP 293 .fi 294 次に例を示します。 295 .nf 296 \f3 297 .fl 298 .:/home/avh/classes:/usr/local/java/classes 299 .fl 300 \fP 301 .fi 302 .TP 3 303 \-bootclasspath path 304 ブートストラップクラスをロードするパスを指定します。ブートストラップクラスは、デフォルトでは \f2jre/lib/rt.jar\fP および他のいくつかの JAR ファイル にある、コア Java プラットフォームを実装するクラスです。 305 .TP 3 306 \-extdirs dirs 307 インストールされた拡張機能を検索する場所をオーバーライドします。拡張機能は、デフォルトでは \f2java.ext.dirs\fP にあります。 308 .LP 309 .SH "環境変数" 310 .TP 15 311 .B CLASSPATH 312 ユーザ定義クラスへのパスをシステムに通知するために使用します。 313 複数のディレクトリを指定する場合はコロンで区切ります。 314 以下に例を示します。 315 .sp 1n 316 .RS 10 317 .B .:/home/avh/classes:/usr/local/java/classes 318 .RE 319 .SH "関連項目" 320 .LP 321 322 .LP 323 .LP 324 javac、java、jdb、javah、javadoc 325 .LP 326 327 .LP 328