下午刚写的自定义的加载器,附上源代码
HelloWord.java
package com.goodtion.sweetop;
public class HelloWord {
public String getInfo(){
return "This is a HelloWorld!";
}
}
FileClassLoader.java
package com.goodtion.sweetop;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileClassLoader extends ClassLoader {
public static final String drive="D://sweetop//搜索引擎//TomcatTest//bin//com//goodtion//sweetop//";
public static final String fileType=".class";
public Class findClass(String name){
byte[] data=loadClassData(name);
return defineClass(name,data,0,data.length);
}
private byte[] loadClassData(String name) {
FileInputStream fis=null;
byte[] data = null;
try {
fis = new FileInputStream(new File(drive+name+fileType));
ByteArrayOutputStream baos=new ByteArrayOutputStream();
int ch=0;
while((ch=fis.read())!=-1){
baos.write(ch);
}
data=baos.toByteArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return data;
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
FileClassLoader loader = new FileClassLoader();
Class objClass=loader.loadClass("com.goodtion.sweetop.HelloWord",true);
Object obj=objClass.newInstance();
System.out.println(objClass.getName());
System.out.println(objClass.getClassLoader().getClass().getName());
System.out.println(((HelloWord)obj).getInfo());
}
}