zoukankan      html  css  js  c++  java
  • 自定义类加载器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();
    }
    }







    }
  • 相关阅读:
    去除字符串中的重复字符
    .net生成的类,跨工程调用显示注释
    Flex 页面空白或Error #2032: 流错误处理办法
    读取点阵字库
    SQL多表联合查询(Access数据库表)
    MSComm不能触发MSComm1_OnComm()事件原因之一
    一个小时内学习SQLite数据库(转)
    人生无悔
    学习之道
    挺经
  • 原文地址:https://www.cnblogs.com/lixiangang/p/14820177.html
Copyright © 2011-2022 走看看