基于urlclassloader实现,同时用到了反射。
import java.net.URL;
import java.io.File;
import java.net.*;
import java.io.*;
public class ClassLoaderTest {
public ClassLoaderTest() {
}
public static void main(String[] args) {
try {
ClassLoaderTest classloadertest = new ClassLoaderTest();
URL[] urls = new URL[1];
java.io.File file = new java.io.File("d://TomcatTest.jar");
URL fileURL = file.toURL();
System.out.println("fileURL: "+fileURL);
urls[0]=fileURL;
java.lang.ClassLoader classloader=new URLClassLoader(urls);
//Class clazz =classloader.loadClass("com.charles.ccztest"); //这种load方式也是可行的
Class clazz=Class.forName("com.charles.ccztest",true,classloader);
Object o = clazz.newInstance();
Class[] classes=new Class[1];
classes[0]=Class.forName("java.lang.String");
Object[] objects=new Object[1];
objects[0]="ccz";
java.lang.reflect.Method method1=o.getClass().getMethod("setName",classes);
method1.invoke(o,objects);
java.lang.reflect.Method method2=o.getClass().getMethod("getName",null);
System.out.println("object: " + method2.invoke(o,null));
}catch(Exception e){
e.printStackTrace();
}
}
}