public class MyClassLoader extends ClassLoader{	String path;//自定义类加载器所负责的文件夹	public MyClassLoader(String path) {		super();		this.path = path;	}		@SuppressWarnings("deprecation")	@Override	protected Class
 findClass(String name) throws ClassNotFoundException { //通过 文件输入流 读取 指定的class文件 String file = path+"/"+name+".class"; System.out.println(file); try { FileInputStream fis = new FileInputStream(file); //将读取的class文件对应的 字节数据 写入到内存中 ByteArrayOutputStream out = new ByteArrayOutputStream(); int i = 0; while ((i = fis.read())!=-1) { out.write(i); } fis.close(); byte[] buf = out.toByteArray();//提取 写到内存中的字节数据到数组// public byte[] toByteArray()创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。  return defineClass(buf, 0, buf.length); } catch (Exception e) { e.printStackTrace(); } return super.findClass(name); }}

测试类

public class MyCLassLoaderTest {	static Scanner in = new Scanner(System.in);	public static void main(String[] args) throws Exception {		System.out.println("需要加载的class文件所在文件夹的路径:");		String path = in.nextLine();// 需要加载的class文件的父路径		System.out.println("需要加载的class文件的文件名:");		String name = in.nextLine();		Class clazz = new MyClassLoader(path).loadClass(name);				//执行加载的class文件的main方法//		Method met = clazz.getMethod("main", String[].class);//		System.out.println(met.toString());//		met.invoke(null, (Object)new String[]{});				// 通过自定义类加载器 加载任意目录下的指定class文件		Class clazz2 = new MyClassLoader(path).loadClass(name);		System.out.println("\r\n--------------列出该class恩件中的所有构造方法==========");		Constructor[] cons = clazz2.getConstructors();		for (Constructor constructor : cons) {			System.out.println(constructor.toString());		}		System.out.println("---------------列出该class恩件中的所有putong方法。。....。。");		Method[] methods = clazz2.getMethods();		for (Method method : methods) {			System.out.println(method.toString());		}	}}//F:\java30\d24//MyIEbyGUI