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