Package org.apache.bcel.classfile
Class ClassParser
- java.lang.Object
-
- org.apache.bcel.classfile.ClassParser
-
public final class ClassParser extends java.lang.ObjectWrapper class that parses a given Java .class file. The method parse returns a JavaClass object on success. When an I/O error or an inconsistency occurs an appropiate exception is propagated back to the caller. The structure and the names comply, except for a few conveniences, exactly with the JVM specification 1.0. See this paper for further details about the structure of a bytecode file.
-
-
Field Summary
Fields Modifier and Type Field Description private intaccess_flagsprivate Attribute[]attributesprivate static intBUFSIZEprivate intclass_name_indexprivate ConstantPoolconstant_poolprivate java.io.DataInputStreamdataInputStreamprivate Field[]fieldsprivate java.lang.Stringfile_nameprivate booleanfileOwnedprivate int[]interfacesprivate booleanis_zipprivate intmajorprivate Method[]methodsprivate intminorprivate intsuperclass_name_indexprivate java.lang.Stringzip_file
-
Constructor Summary
Constructors Constructor Description ClassParser(java.io.InputStream inputStream, java.lang.String file_name)Parses class from the given stream.ClassParser(java.lang.String file_name)Parses class from given .class file.ClassParser(java.lang.String zip_file, java.lang.String file_name)Parses class from given .class file in a ZIP-archive
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description JavaClassparse()Parses the given Java class file and return an object that represents the contained data, i.e., constants, methods, fields and commands.private voidreadAttributes()Reads information about the attributes of the class.private voidreadClassInfo()Reads information about the class and its super class.private voidreadConstantPool()Reads constant pool entries.private voidreadFields()Reads information about the fields of the class, i.e., its variables.private voidreadID()Checks whether the header of the file is ok.private voidreadInterfaces()Reads information about the interfaces implemented by this class.private voidreadMethods()Reads information about the methods of the class.private voidreadVersion()Reads major and minor version of compiler which created the file.
-
-
-
Field Detail
-
dataInputStream
private java.io.DataInputStream dataInputStream
-
fileOwned
private final boolean fileOwned
-
file_name
private final java.lang.String file_name
-
zip_file
private java.lang.String zip_file
-
class_name_index
private int class_name_index
-
superclass_name_index
private int superclass_name_index
-
major
private int major
-
minor
private int minor
-
access_flags
private int access_flags
-
interfaces
private int[] interfaces
-
constant_pool
private ConstantPool constant_pool
-
fields
private Field[] fields
-
methods
private Method[] methods
-
attributes
private Attribute[] attributes
-
is_zip
private final boolean is_zip
-
BUFSIZE
private static final int BUFSIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ClassParser
public ClassParser(java.io.InputStream inputStream, java.lang.String file_name)Parses class from the given stream.- Parameters:
inputStream- Input streamfile_name- File name
-
ClassParser
public ClassParser(java.lang.String file_name)
Parses class from given .class file.- Parameters:
file_name- file name
-
ClassParser
public ClassParser(java.lang.String zip_file, java.lang.String file_name)Parses class from given .class file in a ZIP-archive- Parameters:
zip_file- zip file namefile_name- file name
-
-
Method Detail
-
parse
public JavaClass parse() throws java.io.IOException, ClassFormatException
Parses the given Java class file and return an object that represents the contained data, i.e., constants, methods, fields and commands. A ClassFormatException is raised, if the file is not a valid .class file. (This does not include verification of the byte code as it is performed by the java interpreter).- Returns:
- Class object representing the parsed class file
- Throws:
java.io.IOExceptionClassFormatException
-
readAttributes
private void readAttributes() throws java.io.IOException, ClassFormatExceptionReads information about the attributes of the class.- Throws:
java.io.IOExceptionClassFormatException
-
readClassInfo
private void readClassInfo() throws java.io.IOException, ClassFormatExceptionReads information about the class and its super class.- Throws:
java.io.IOExceptionClassFormatException
-
readConstantPool
private void readConstantPool() throws java.io.IOException, ClassFormatExceptionReads constant pool entries.- Throws:
java.io.IOExceptionClassFormatException
-
readFields
private void readFields() throws java.io.IOException, ClassFormatExceptionReads information about the fields of the class, i.e., its variables.- Throws:
java.io.IOExceptionClassFormatException
-
readID
private void readID() throws java.io.IOException, ClassFormatExceptionChecks whether the header of the file is ok. Of course, this has to be the first action on successive file reads.- Throws:
java.io.IOExceptionClassFormatException
-
readInterfaces
private void readInterfaces() throws java.io.IOException, ClassFormatExceptionReads information about the interfaces implemented by this class.- Throws:
java.io.IOExceptionClassFormatException
-
readMethods
private void readMethods() throws java.io.IOException, ClassFormatExceptionReads information about the methods of the class.- Throws:
java.io.IOExceptionClassFormatException
-
readVersion
private void readVersion() throws java.io.IOException, ClassFormatExceptionReads major and minor version of compiler which created the file.- Throws:
java.io.IOExceptionClassFormatException
-
-