1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import java.io.*;
import java.net.*;
import java.util.*;
import java.util.jar.*;
/**
* @author Matthew D. Hicks
*/
public class JARClassLoader extends URLClassLoader {
protected File file;
protected JarFile jar;
public JARClassLoader(File file) throws MalformedURLException, IOException {
super(new URL[] {file.toURL()});
this.file = file;
this.jar = new JarFile(file);
}
public Class[] getClasses() throws ClassNotFoundException {
ArrayList list = new ArrayList(500);
Enumeration e = jar.entries();
JarEntry entry;
while (e.hasMoreElements()) {
entry = (JarEntry)e.nextElement();
if ((!entry.isDirectory()) && (entry.getName().endsWith(".class"))) {
list.add(entry.getName().replaceAll("/", ".").substring(0, entry.getName().length() - 6));
}
}
Class[] classes = new Class[list.size()];
for (int i = 0; i < list.size(); i++) {
classes = this.loadClass((String)list.get(i));
}
return classes;
}
public static void main(String[] args) throws Exception {
File file = new File("myclasses.jar");
JARClassLoader loader = new JARClassLoader(file);
Class[] classes = loader.getClasses();
for (int i = 0; i < classes.length; i++) {
System.out.println("Class: " + classes.getName());
}
}
} |
Partager