2010年3月11日 星期四

ClassLoader in Java

ArrayList<URL> classPath = new ArrayList<URL>();
classPath.add(new File(workDir+"/").toURL());
classPath.add(file.toURL());
classPath.add(new File(workDir, "classes/").toURL());
File[] libs = new File(workDir, "lib").listFiles();
if (libs != null) {
    for (int i = 0; i < libs.length; i++) {
      classPath.add(libs[i].toURL());
    }
}

ClassLoader loader =
    new URLClassLoader(classPath.toArray(new URL[0]));


Thread.currentThread().setContextClassLoader(loader);
Class<?> mainClass = Class.forName(mainClassName, true, loader);
Method main = mainClass.getMethod("main", new Class[] {
    Array.newInstance(String.class, 0).getClass()
});

    String[] newArgs = Arrays.asList(args).subList(firstArg, args.length).toArray(new String[0]);
try {
    main.invoke(null, new Object[] { newArgs });
} catch (InvocationTargetException e) {
    throw e.getTargetException();
}

沒有留言:

張貼留言