1 3 package jxxload_help; 4 5 public class PathVFSJavaLoader extends ClassLoader { 6 private ClassLoader parent; 7 8 private PathVFS vfs; 9 10 public java.util.Vector interfaces = new java.util.Vector (); 11 12 public PathVFSJavaLoader(PathVFS vfs,ClassLoader parent) { 13 this.vfs = vfs; 14 this.parent = parent; 15 } 16 17 protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { 18 Class c; 19 20 c = findLoadedClass(name); 21 if (c != null) return c; 22 23 try { 24 if (parent != null) return parent.loadClass(name); 25 } catch(ClassNotFoundException e) { 26 } 27 28 java.io.InputStream in = vfs.open(name.replace('.','/')+".class"); 29 if (in == null) throw new ClassNotFoundException (name); 30 try { 31 byte[] buf = org.python.core.FileUtil.readBytes( in ); 32 in.close(); 33 return loadClassFromBytes(name,buf); 34 } catch(java.io.IOException e) { 35 throw new ClassNotFoundException (name); 36 } 37 } 38 39 private Class loadClassFromBytes(String name, byte[] data) { 40 Class c = defineClass(name, data, 0, data.length); 41 resolveClass(c); 42 if (c.isInterface()) interfaces.addElement(c); 43 if (!org.python.core.Options.skipCompile) { 44 Compiler.compileClass(c); 45 } 46 return c; 47 } 48 49 } 50
| Popular Tags
|