/* * Created on Aug 11, 2004 */ 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[i] = 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[i].getName()); } } }