Provides easy access to class files and their contents. To use it you create a ClassPath object giving it the locations where it should search for classes. Then you can ask this object for a class and get a ClassInfo object. As third step you can actually load the class.

Please notify me if you want to use this package. I will inform you about updates, help you with problems, etc. WARNING: This package may change in the future in incompatible ways. Ask me for more information.

BIG FAT WARNING: Some of the things documented here aren't even implemented. Some of this is only vapor ware. But feel free to comment on this and point me to design errors!

Here is a short example, how you can use this package, see the documentation of the classes for more details.
 ...
 ClassPath path = new ClassPath("/usr/lib/java/lib/classes.zip");
 ClassInfo clazz = path.getClassInfo("java.util.Hashtable");

 try {
   clazz.load(ClassInfo.DECLARATIONS);
 } catch (ClassFormatException ex) {
   System.err.println("Something is wrong with HashTable, giving up!");
   return;
 } catch (IOException ex) {
   System.err.println("Can't load HashTable, giving up!");
   return;
 }

 MethodInfo[] methods = clazz.getMethods();
 for (int i=0; i< methods.length; i++) {
     String type = methods[i].getType();
     if (TypeSignature.getReturnType(type) == TypeSignature.INT_TYPE)
         System.out.println("Found integer method: "+method.getName());
 }
 ...
You can also use this package to create and write new classes:
 ...
 ClassPath path = new ClassPath("/usr/lib/java/lib/classes.zip");
 ClassInfo clazz = path.getClassInfo("my.new.Class");
 clazz.setModifiers(Modifiers.PUBLIC);
 clazz.setSourceFile("Class.pl");
 clazz.set...
 clazz.write(zipOutputStream);
 ...

Jochen Hoenicke
Last modified: Mon Jun 26 09:46:24 MET DST 2000