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