1/*
2 * Javassist, a Java-bytecode translator toolkit.
3 * Copyright (C) 1999-2007 Shigeru Chiba. All Rights Reserved.
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License.  Alternatively, the contents of this file may be used under
8 * the terms of the GNU Lesser General Public License Version 2.1 or later.
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 */
15
16package javassist.tools;
17
18import java.io.*;
19import javassist.bytecode.ClassFile;
20import javassist.bytecode.ClassFilePrinter;
21
22/**
23 * Dump is a tool for viewing the class definition in the given
24 * class file.  Unlike the JDK javap tool, Dump works even if
25 * the class file is broken.
26 *
27 * <p>For example,
28 * <ul><pre>% java javassist.tools.Dump foo.class</pre></ul>
29 *
30 * <p>prints the contents of the constant pool and the list of methods
31 * and fields.
32 */
33public class Dump {
34    private Dump() {}
35
36    /**
37     * Main method.
38     *
39     * @param args           <code>args[0]</code> is the class file name.
40     */
41    public static void main(String[] args) throws Exception {
42        if (args.length != 1) {
43            System.err.println("Usage: java Dump <class file name>");
44            return;
45        }
46
47        DataInputStream in = new DataInputStream(
48                                         new FileInputStream(args[0]));
49        ClassFile w = new ClassFile(in);
50        PrintWriter out = new PrintWriter(System.out, true);
51        out.println("*** constant pool ***");
52        w.getConstPool().print(out);
53        out.println();
54        out.println("*** members ***");
55        ClassFilePrinter.print(w, out);
56    }
57}
58