JAVA Class Loader
来源:互联网 发布:最新手机拍照软件 编辑:程序博客网 时间:2024/05/19 05:03
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author zhouushe
*
*/
public class MyClassLoader extends ClassLoader {
private String name;
private String path = "d:\\";
private final String fileType = ".class";
public MyClassLoader(String name) {
super();
this.name = name;
}
public MyClassLoader(ClassLoader parent, String name) {
super(parent);
this.name = name;
}
@Override
public String toString() {
return this.name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Override
public Class<?> findClass(String name) throws ClassNotFoundException {
byte[] data = this.loadClassData(name);
System.out.println(name);
return this.defineClass(name, data, 0, data.length);
}
private byte[] loadClassData(String name) {
InputStream is = null;
byte[] data = null;
ByteArrayOutputStream baos = null;
try {
this.name = this.name.replace(".", "\\");
is = new FileInputStream(new File(path + name + fileType));
System.out.println(path + name + fileType);
System.out.println(name);
baos = new ByteArrayOutputStream();
int ch = 0;
while (-1 != (ch = is.read())) {
baos.write(ch);
}
data = baos.toByteArray();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
is.close();
baos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return data;
}
public static void test(ClassLoader loader) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
Class clazz = loader.loadClass("Sample");
Object object = clazz.newInstance();
}
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
MyClassLoader loader1 = new MyClassLoader("loader1");
loader1.setPath("d:\\myapp\\serverlib\\");
MyClassLoader loader2 = new MyClassLoader(loader1, "loader2");
loader2.setPath("d:\\myapp\\clientlib\\");
MyClassLoader loader3 = new MyClassLoader(null, "loader3");
loader3.setPath("d:\\myapp\\otherlib\\");
System.out.println("================loader1=================");
MyClassLoader.test(loader1);
System.out.println("================loader2=================");
MyClassLoader.test(loader2);
System.out.println("================loader3=================");
MyClassLoader.test(loader3);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author zhouushe
*
*/
public class MyClassLoader extends ClassLoader {
private String name;
private String path = "d:\\";
private final String fileType = ".class";
public MyClassLoader(String name) {
super();
this.name = name;
}
public MyClassLoader(ClassLoader parent, String name) {
super(parent);
this.name = name;
}
@Override
public String toString() {
return this.name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Override
public Class<?> findClass(String name) throws ClassNotFoundException {
byte[] data = this.loadClassData(name);
System.out.println(name);
return this.defineClass(name, data, 0, data.length);
}
private byte[] loadClassData(String name) {
InputStream is = null;
byte[] data = null;
ByteArrayOutputStream baos = null;
try {
this.name = this.name.replace(".", "\\");
is = new FileInputStream(new File(path + name + fileType));
System.out.println(path + name + fileType);
System.out.println(name);
baos = new ByteArrayOutputStream();
int ch = 0;
while (-1 != (ch = is.read())) {
baos.write(ch);
}
data = baos.toByteArray();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
is.close();
baos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return data;
}
public static void test(ClassLoader loader) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
Class clazz = loader.loadClass("Sample");
Object object = clazz.newInstance();
}
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
MyClassLoader loader1 = new MyClassLoader("loader1");
loader1.setPath("d:\\myapp\\serverlib\\");
MyClassLoader loader2 = new MyClassLoader(loader1, "loader2");
loader2.setPath("d:\\myapp\\clientlib\\");
MyClassLoader loader3 = new MyClassLoader(null, "loader3");
loader3.setPath("d:\\myapp\\otherlib\\");
System.out.println("================loader1=================");
MyClassLoader.test(loader1);
System.out.println("================loader2=================");
MyClassLoader.test(loader2);
System.out.println("================loader3=================");
MyClassLoader.test(loader3);
}
}
- Java中的Class Loader
- Java中的Class Loader
- Java Class Loader
- Java Class Loader
- [java]class loader
- Java class loader(1)
- Java class loader(2)
- Java class loader
- java class loader
- java class loader 学习
- java class loader
- java Class Loader
- JAVA Class Loader
- JAVA CLASS LOADER
- JAVA Class Loader Initialization
- Java Class Loader
- Java Class Loader
- java class loader mechanism
- 【JAVA基础】JAVA多线程编程详解
- ACM——博弈论 (以SG的求法为主)
- 几道Java笔试题
- Android学习笔记(四)
- linux常用命令
- JAVA Class Loader
- 差值扩展(DE)可逆水印总结
- 编写客户文档的职责
- Set Definition
- oracle sql loader全攻略
- C语言宏定义##连接符和#符的使用
- 动态控制水晶报表中数字栏位的值显示的小数位数
- TCP/IP Illustrated 笔记 BGP
- 00001.Oracle版本查看