package com.e1.pdj; import java.net.URLClassLoader; import java.net.*; import java.util.*; import java.io.*; import com.cycling74.max.MaxSystem; public class PDJClassLoader extends URLClassLoader { /** The folder where the class (and java files) are */ static File fclasses; /** if this is set to true, all classloader operation will be logged */ static boolean verboseCL = false; static private PDJClassLoader instance; static { String prop = System.getProperty("pdj.classes-dir"); if ( prop == null ) { fclasses = new File(System.getProperty("pdj.home") + "/classes"); } else { fclasses = new File(prop); } instance = new PDJClassLoader(); verboseCL = PDJSystem.isSystemPropertyTrue("pdj.verbose-classloader"); } static public PDJClassLoader getInstance() { return instance; } public PDJClassLoader() { super(resolvClasspath()); } private static void findJars(File f, Collection v) throws MalformedURLException { File files[] = f.listFiles(); for(int i = 0;i classFile.lastModified() ) { compileClass(javaFile); } else { if ( verboseCL ) MaxSystem.post("class: " + name + " is already compiled and younger than the source .java file"); } } else { compileClass(javaFile); } } resetClassloader(); try { return instance.loadClass(name); } catch (ClassNotFoundException e) { throw new PDJClassLoaderException(e); } } protected static void compileClass(File javaFile) throws PDJClassLoaderException { String str_compiler = System.getProperty("pdj.compiler"); GenericCompiler compiler = null; if ( str_compiler.equals("jikes") ) { compiler = new JikesCompiler(); } else { if ( !str_compiler.equals("javac") ) { System.err.println("pdj: unknown compiler:" + str_compiler + ", using javac."); } compiler = new JavacCompiler(); } compiler.javaFile = javaFile; compiler.compileClass(); } }