public class Loader extends ClassLoader{
private String classPath;
private String classname="Test";
public Loader(String classPath){
this.classPath=classPath;
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte []classData=getData(name);
if(classData==null){
throw new ClassNotFoundException();
}
else{
return defineClass(classname, classData, 0, classData.length);
}
}
private byte[] getData(String className){
String path=classPath+className;
try{
InputStream is=new FileInputStream(path);
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte []buffer=new byte[2048];
int num=0;
while((num=is.read(buffer))!=-1){
stream.write(buffer,0,num);
}
return stream.toByteArray();
}
catch(IOException e){
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String path="D:/";
Loader loader=new Loader(path);
try {
Class<?> r=loader.findClass("Test.class");
Object object=r.newInstance();
Method methods[]=r.getDeclaredMethods();
for(Method m:methods){
m.invoke(object);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
继承classLoader加载一个class文件demo
最新推荐文章于 2020-05-30 18:47:17 发布