• 自定义类加载器classLoader


    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();
    }
    }







    }
  • 相关阅读:
    bzoj 2216 Lightning Conductor
    一些有趣的问题合集
    Codeforces 40E Number Table
    Codeforces 37D Lesson Timetable
    bzoj 4289 Tax
    bzoj 2844 albus就是要第一个出场
    bzoj 2115 Xor
    luogu 3790 文艺数学题
    bzoj 1420 Discrete Root
    Lucas定理学习笔记
  • 原文地址:https://www.cnblogs.com/lixiangang/p/14820177.html
Copyright © 2020-2023  润新知