⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myclassloader.java

📁 采用JAVA开发
💻 JAVA
字号:
package com.gctech.sms.util;

import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.util.Iterator;
import java.io.FileInputStream;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: gctech</p>
 * @author 王红宝
 * @version $Id: MyClassLoader.java,v 1.1.1.1 2004/04/21 09:30:41 wanghb Exp $
 */

public class MyClassLoader extends ClassLoader {

  public MyClassLoader() {

  }


  /**
   * 加载类
   * @param className 类名称
   * @return 类实例
   * @throws ClassNotFoundException
   */
  public Class loadFromCustomRepository(String className) {
    /**取环境变量*/
    String classPath = System.getProperty("java.class.path");
    List classRepository = new ArrayList();
    /**取得该路径下的所有文件夹 */
    if ( (classPath != null) && ! (classPath.equals(""))) {
      StringTokenizer tokenizer = new StringTokenizer(classPath,
          File.pathSeparator);
      while (tokenizer.hasMoreTokens()) {
        classRepository.add(tokenizer.nextToken());
      }
    }
    Iterator dirs = classRepository.iterator();
    byte[] classBytes = null;
    /**在类路径上查找该名称的类是否存在,如果不存在继续查找*/
    while (dirs.hasNext()) {
      String dir = (String) dirs.next();
      //replace '.' in the class name with File.separatorChar & append .class to the name
      String classFileName = className.replace('.', File.separatorChar);
      classFileName += ".class";
      try {
        File file = new File(dir + File.separatorChar + classFileName);
        if (file.exists()) {
          InputStream is = new FileInputStream(file);
          /**把文件读到字节文件*/
          classBytes = new byte[is.available()];
          is.read(classBytes);
          break;
        }
      }
      catch (IOException ex) {
        System.out.println("IOException raised while reading class file data");
        ex.printStackTrace();
        return null;
      }
    }
    return this.defineClass(className, classBytes, 0, classBytes.length);//加载类
  }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -