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