package kilim.tools;
import java.lang.reflect.Method;
import kilim.WeavingClassLoader;
/**
* Invoke as java -Dkilim.classpath="classDir1:classDir2:jar1.jar:..." Kilim class args...
*
* This class dynamically weaves kilim-related classes and runs "class". The classpath
* specified must not be in the main classpath, otherwise the system class loader will
* use the raw, unwoven classes.
*/
public class Kilim {
public static void main(String[] args) throws Exception {
if (args.length == 0) {
usage();
}
String className = args[0];
args = processArgs(args);
WeavingClassLoader wcl = new WeavingClassLoader(Thread.currentThread().getContextClassLoader());
Class<?> mainClass = wcl.loadClass(className);
Method mainMethod = mainClass.getMethod("main", new Class[]{String[].class});
mainMethod.invoke(null,new Object[] {args});
}
private static void usage() {
System.out.println("java -Dkilim.classpath kilim.tools.Kilim class [args ...]");
System.exit(1);
}
private static String[] processArgs(String[] args) {
String[] ret = new String[args.length-1];
if (ret.length > 0)
System.arraycopy(args, 1, ret, 0, ret.length);
return ret;
}
}