// $Id: LoadNetI.java,v 1.1 2002-07-14 22:15:38+09 kaiya Exp kaiya $ import java.io.*; import java.net.*; public class LoadNetI extends ClassLoader{ private byte[] data; private String myname; public LoadNetI(String url){ readBytes(url); myname=new Jcf(data).className(); } String lcname(){return myname;} protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ Class clazz = null; try{ return findSystemClass(name); } catch(Throwable e){} clazz=findLoadedClass(name); if(clazz != null){ return clazz; } clazz=myFindClass(name); if(clazz == null ){ throw new ClassNotFoundException(name); } if(resolve){ resolveClass(clazz); } return clazz; } void readBytes(String u){ data=new byte[4096]; int total=0, n; try{ URL url=new URL(u); InputStream is=url.openStream(); while((n=is.read(data,total,data.length-total))>=0){ if((total+=n) == data.length){ byte newdata[]=new byte[total*2]; System.arraycopy(data, 0, newdata, 0, total); data = newdata; } } byte[] b=new byte[total]; System.arraycopy(data, 0, b, 0, total); data=b; }catch(IOException e){} } private synchronized Class myFindClass(String name){ try{ return defineClass(name, data, 0, data.length); }catch(Throwable e){ System.out.println(e.getMessage()); throw new ClassFormatError(); } } public static void main(String args[]){ LoadNetI loader=new LoadNetI(args[0]); try{ Class c=loader.loadClass(loader.lcname()); Runnable cmd=(Runnable)c.newInstance(); cmd.run(); }catch(Throwable e){ e.printStackTrace(); } } }