package com.hange; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; /** * 自定义MyClassLoader继承ClassLoader */ public class MyClassLoader extends ClassLoader { /** * 1.重写java中类加载器的顶级抽象类ClassLoader中的findClass方法即可; * 2.不重写loadClass方法是为了不破坏类加载器的双亲委派机制 * 3.对字节码文件的加解密操作可以根据实际情况自定义 * * @param className * @return * @throws ClassNotFoundException */ @Override protected Class<?> findClass(String className) throws ClassNotFoundException { //根据类名获取字节码文件的路径 String path = "E:\\IDEA_Project\\Security_Parent\\Security_Parent\\src\\main\\java\\com\\hange"; String[] fileNameGroup=className.split("\\."); String fileName=path+"\\"+fileNameGroup[fileNameGroup.length-1]+".class"; byte[] data = new byte[0]; FileInputStream fis=null; ByteArrayOutput
自定义ClassLoader
最新推荐文章于 2024-07-29 02:04:30 发布
本文介绍了如何自定义一个ClassLoader,通过重写findClass方法,实现了类的加载,同时保持了双亲委派机制。示例代码展示了如何从指定路径读取字节码文件并加载为Class对象。
摘要由CSDN通过智能技术生成