自定义文件类加载器
自定義類加載器
我們如果需要自定義類加載器,只需要繼承ClassLoader類,并覆蓋掉findClass方法即可。
自定義文件類加載器
package com.leon.base.classloader;import sun.applet.Main;import java.io.*;public class MyFileClassLoader extends ClassLoader {private String directory;//被加載的類所在的目錄/*** 指定要加載的類所在的文件目錄* @param directory*/public MyFileClassLoader(String directory,ClassLoader parent){super(parent);this.directory = directory;}protected Class<?> findClass(String name) throws ClassNotFoundException {try {//把類名轉換為目錄String file = directory+File.separator+name.replace(".", File.separator)+".class";//構建輸入流InputStream in = new FileInputStream(file);//存放讀取到的字節數據ByteArrayOutputStream baos = new ByteArrayOutputStream();byte buf[] = new byte[1024];int len = -1;while((len=in.read(buf))!=-1){baos.write(buf,0,len);}byte data[] = baos.toByteArray();in.close();baos.close();return defineClass(name,data,0,data.length);} catch (IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) throws Exception {MyFileClassLoader myFileClassLoader = new MyFileClassLoader("d:/");Class clazz = myFileClassLoader.loadClass("com.leon.Demo");clazz.newInstance();} }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: URLClassLoader的使用
- 下一篇: 热部署类加载器