zoukankan      html  css  js  c++  java
  • 从文件中路径中加载一个class

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class FileSystemClassLoader extends ClassLoader { 
    
        private String rootDir; 
    
        public FileSystemClassLoader(String rootDir) { 
            this.rootDir = rootDir; 
        } 
    
        protected Class<?> findClass(String name) throws ClassNotFoundException { 
            byte[] classData = getClassData(name); 
            if (classData == null) { 
                throw new ClassNotFoundException(); 
            } 
            else { 
                return defineClass(name, classData, 0, classData.length); 
            } 
        } 
    
        public byte[] getClassData(String className) { 
            String path = classNameToPath(className); 
            System.out.println(path);
            try { 
                InputStream ins = new FileInputStream(path); 
                ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
                int bufferSize = 4096; 
                byte[] buffer = new byte[bufferSize]; 
                int bytesNumRead = 0; 
                while ((bytesNumRead = ins.read(buffer)) != -1) { 
                    baos.write(buffer, 0, bytesNumRead); 
                } 
                return baos.toByteArray(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            }
            return null; 
        } 
    
        private String classNameToPath(String className) { 
            return rootDir + File.separatorChar 
                    + className.replace('.', File.separatorChar) + ".class"; 
        } 
     }
  • 相关阅读:
    面试笔记1
    Hello World!!
    百度地图API JavaScript显示人员分布信息
    MUI Picker选择器 自定义省市地址三级联动
    【Unity】Lua热重载
    【临时存放】变量配置
    SVN代码管理出现注册错误
    javaweb学习
    微信应用号(微信小程序)开发教程
    shell脚本时间运算
  • 原文地址:https://www.cnblogs.com/overstep/p/2920836.html
Copyright © 2011-2022 走看看