package thahn.java.agui.ide.eclipse.utils;
import java.io.File;
import java.io.FileFilter;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
public class RuntimeJarLoader {
public static void loadJarIndDir(String dir) {
try {
final URLClassLoader loader = (URLClassLoader) ClassLoader.getSystemClassLoader();
final Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class });
method.setAccessible(true);
new File(dir).listFiles(new FileFilter() {
public boolean accept(File jar) {
if (jar.toString().toLowerCase().contains(".jar")) {
try {
method.invoke(loader, new Object[] { jar.toURI()
.toURL() });
System.out.println(jar.getName() + " is loaded.");
} catch (Exception e) {
System.out.println(jar.getName() + " can't load.");
}
}
return false;
}
});
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
/* way2
// MyClassLoader which extends URLClassLoader class.
import java.net.URL;
import java.net.URLClassLoader;
public class MyClassLoader extends URLClassLoader {
public MyClassLoader(URL[] urls) {
super(urls);
}
@Override
public void addURL(URL url) {
super.addURL(url);
}
}
// Loading ���
public static void main(String[] args) {
URLClassLoader loader = (URLClassLoader)ClassLoader.getSystemClassLoader();
MyClassLoader l = new MyClassLoader(loader.getURLs());
File dir = new File("./ dynamic_lib");
File[] files = dir.listFiles();
if (files != null) {
// To add libraries to classpath dynamically, loading jar files in the ./ dynamic_lib directory.
for (File file : files) {
System.out.println("file URI: " + file.toURI().toURL());
l.addURL(file.toURI().toURL());
}
}
}
*/