import java.io.FileInputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; public class ClassLoaderSample { public static void main(String[] args) throws Exception { String jarFile = "C:/workspace/bruce.lib/Blib.jar"; URLClassLoader dynamicLoader = URLClassLoader.newInstance(new URL[] { new URL("file", null, jarFile) }, ClassLoaderTest.class.getClassLoader()); // List content JarInputStream jis = new JarInputStream(new FileInputStream(jarFile)); JarEntry entry = null; while ((entry = jis.getNextJarEntry()) != null) { String name = entry.getName(); System.out.println(name); } System.out.println("====="); // Inovke method Class objClass = Class.forName("aaa.bbb.PrintTable", true, dynamicLoader); Object obj = objClass.newInstance(); Method objMethod = objClass.getDeclaredMethod("print"); objMethod.invoke(obj); // Field value Field objField = objClass.getDeclaredField("tableName"); System.out.println(objField.get(obj)); // Change field value objField.set(obj, "myTable"); } }