return defineClass(name, data, 0, data.length);
}
private byte[] loadClassData(String name){
byte [] data = null;
try {
URL urlRemote = new URL("http:// www.2cto.com /test/" + name + ".class");//须保证远程文件地址可达
URLConnection uConnection = urlRemote.openConnection();
InputStream inputStream = uConnection.getInputStream();
int length = uConnection.getContentLength();
data = new byte[length];
inputStream.read(data);
inputStream.close();
return data;
} catch (Exception e) {
System.out.println(name +"类没有找到!");
e.printStackTrace();
}
return data;
}
}
3.MyApp.java
package jack.classloader.own;
import jack.classloader.own.local.FileClassLoader;
import jack.classloader.own.remote.RemoteClassLoader;
import jack.classloader.test.IService;
public class MyApp {
/**
* @param args
* @throws IllegalAcces***ception
* @throws InstantiationException
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) throws InstantiationException, IllegalAcces***ception {
//local
FileClassLoader loader = new FileClassLoader();
Class< > objClass = loader.findClass("jack.classloader.test.Service");
IService service = (IService)objClass.newInstance();
System.out.println(objClass.getName());
System.out.println(objClass.getClassLoader());
System.out.println(service);
service.service();
System.out.println();
//remote
RemoteClassLoader remoteLoader = new RemoteClassLoader();
Class< > objClassRemote = remoteLoader.findClass("Service");
IService serviceRemote = (IService)objClassRemote.newInstance();
serviceRemote.service();
}
}
摘自 sdtarena