首页 > 其他 > 详细

自定义类加载器classLoader

时间:2021-05-28 09:44:30      阅读:28      评论:0      收藏:0      [点我收藏+]
package cn.bdqn.userconsumer;

import java.io.*;

/**
* 自定义classLoader 类加载器
*/
public class HelloClassLoad extends ClassLoader {

/**
* 自定义类加载器
* 继承classLoader 重写findClass()方法
* @param name
* @return
* @throws ClassNotFoundException
*/
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
File file = new File("F:\\test",name.replace(".","\\").concat(".class"));
try {
FileInputStream inputStream = new FileInputStream(file);
//FileOutputStream fileoutput = new FileOutputStream(new File("F:/test",name.replace(".","/").concat(".class")));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int by=0;
while((by = inputStream.read()) !=0){
outputStream.write(by);
}

byte[] bytes = outputStream.toByteArray();
outputStream.close();

defineClass(name,bytes,0,bytes.length);
} catch (Exception e) {
e.printStackTrace();
}

return super.findClass(name);
}


public static void main(String[] args) {
try {
//使用自定义 classLoader
ClassLoader classLoader = new HelloClassLoad();
//加载指定目录下的类文件
Class<?> aClass = classLoader.loadClass("cn.bdqn.userconsumer.HelloJol");
HelloJol helloJol = (HelloJol) aClass.newInstance();
helloJol.Str();
System.out.println(classLoader.getClass().getClassLoader());
System.out.println(classLoader.getParent());
} catch (Exception e) {
e.printStackTrace();
}
}







}

自定义类加载器classLoader

原文:https://www.cnblogs.com/lixiangang/p/14820177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!