Classfile Reader & Writer

This package makes it easy to read and write java classfiles. It doesn't, however, provide any help with displaying the contents of a classfile to the user (unless you count debug output), or disassembling the bytecodes.

This code snippet will read in a classfile and write it back out to a different file.

InputStream is = new FileInputStream("Foo.class");
OutputStream os = new FileOutputStream("FooCopy.class");
ClassInfo classInfo = new ClassInfo();
new ClassFileReader().read(is, classInfo);
classInfo.setName("FooCopy");  // Java requires the class name to match the file name
new ClassFileWriter().write(classInfo, os);
is.close();os.close();

Here is the API documentation.
Here is the source (56K).
Here is the VM Spec that I used.

The package can read "obfuscated" classfiles, like those generated by Crema, but it can't write them. Obfuscated classfiles have invalid data in them and the only reason they work is because most VMs ignore the data that's invalid (attributes like SourceFile, LineNumberTable, and LocalVariableTable). If a ClassFileReader encounters invalid data, it just ignores it.

License

I have released the package to the public domain. That means you may use it for whatever you want, and you don't even have to ask my permission, or mention my name.

Related Work

Past Enhancements


Last updated April 15, 1997
Back to Kimberley's Code.
Back to Kimberley's Home Page.