直接上代码,懂得都懂~
@Test
public void loadJar(){
SimpleClassLoader simpleClassLoader1=new SimpleClassLoader(new URL[0],"C:\\Users\\yzc\\Desktop\\test\\Test1.jar");
SimpleClassLoader simpleClassLoader2=new SimpleClassLoader(new URL[0],"C:\\Users\\yzc\\Desktop\\test\\Test2.jar");
try {
Class<?> test1Class = simpleClassLoader1.loadClass("com.test.Test1Service");
String[] params1=new String[]{"1111"};
Object strip1= test1Class.getDeclaredMethod("main", String[].class).invoke(null, ((Object) params1));
Class<?> test2Class = simpleClassLoader2.loadClass("com.test.Test2Service");
String[] params2=new String[]{"1111"};
Object strip2 = test2Class.getDeclaredMethod("main", String[].class).invoke(null, ((Object) params2));
} catch (Exception e) {
e.printStackTrace();
}
// loadJar("C:\\Users\\yzc\\Desktop\\test\\Test1.jar");
// loadJar("C:\\Users\\yzc\\Desktop\\test\\Test2.jar");
try {
Class<?> test1Class = Class.forName("com.test.Test1Service");
String[] params1=new String[]{"1111"};
Object strip1= test1Class.getDeclaredMethod("main", String[].class).invoke(null, ((Object) params1));
Class<?> test2Class = Class.forName("com.test.Test2Service");
String[] params2=new String[]{"1111"};
Object strip2 = test2Class.getDeclaredMethod("main", String[].class).invoke(null, ((Object) params2));
} catch (Exception e) {
e.printStackTrace();
}
}
public class SimpleClassLoader extends URLClassLoader {
private String jarBasePath;
public SimpleClassLoader(URL[] urls,String jarPath) {
//parent 设置为null 则不会被 system classloader 加载
super(urls,null);
try {
super.addURL(new URL("file:"+jarPath));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
// if("com.qiyi.middleware.service.IMiddlewareService".equals(name)){
// return SimpleClassLoader.class.getClassLoader().loadClass(name);
// }
try {
return super.findClass(name);
}catch (ClassNotFoundException e){
return SimpleClassLoader.class.getClassLoader().loadClass(name);
}
}
}