📄 myclassloader.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 + -