搜档网
当前位置:搜档网 › 动态加载JAR包与Method方法调用

动态加载JAR包与Method方法调用

import https://www.sodocs.net/doc/db12279003.html,ng.reflect.InvocationTargetException;
import https://www.sodocs.net/doc/db12279003.html,ng.reflect.Method;
import https://www.sodocs.net/doc/db12279003.html,.MalformedURLException;
import https://www.sodocs.net/doc/db12279003.html,.URL;
import https://www.sodocs.net/doc/db12279003.html,.URLClassLoader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

public class Demo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Calendar cal = new GregorianCalendar();
cal.setTime(new Date());

cal.add(Calendar.DAY_OF_MONTH, 280);

Date newDate = cal.getTime();
System.err.println(newDate);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formatedString = sdf.format(newDate);
System.err.println(formatedString);

String url = "file:D:\\develop\\workspace\\test.jar";
URL _url;
try {
_url = new URL(url);
URLClassLoader loader = new URLClassLoader(new URL[] { _url });

try {
Class cls = loader
.loadClass("demo.LoaderTest");
try {
List classList = new ArrayList();
classList.add(String.class);
classList.add(int.class);
Class[] classes = new Class[classList.size()];
classList.toArray(classes);

List paramList = new ArrayList();
paramList.add("tom");
paramList.add(38);
Object[] params = new Object[paramList.size()];
paramList.toArray(params);

Method[] methods = cls.getMethods();
for (Method m : methods) {
String methodName = m.getName();
Class[] types = m.getParameterTypes();
List typeList = Arrays.asList(types);

if ("getNameAndAge".equals(methodName)) {
if (typeList.equals(classList)
&& paramList.size() == types.length) {
try {
Object result = m.invoke(cls.newInstance(),
params);
System.out.println(result);
break;
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
}
} catch (SecurityException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

} catch (MalformedURLException e) {
e.printStackTrace();
}
}

}



/**
*
*/
package demo;

/**
* @author JXS
*
*/
public class LoaderTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

public String getName(String name){

return "name is " + name;
}

public String getAge(int age){

return "age is " + (age-10);
}

public String getNameAndAge(String name, i

nt age){

return "name is " + name +" and age is " + (age-10);
}

public String getNameAndAge(String name, int age, String address){

return name + "name is " + name +" and age is " + (age-10) + " ans address is " + address;
}

}