package com.wangyin.ak47.common; import java.net.URL; import java.net.URLClassLoader; import java.net.URLStreamHandlerFactory; import java.util.List; /** * This is a basic URL classloader for loading new resources * dynamically. * * It allows public access to the addURL() method. * * It also adds a convenience method to update the current thread classloader * */ public class DynamicClassLoader extends URLClassLoader { public DynamicClassLoader(URL[] urls) { super(urls); } public DynamicClassLoader(URL[] urls, ClassLoader parent) { super(urls, parent); } public DynamicClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) { super(urls, parent, factory); } // Make the addURL method visible @Override public void addURL(URL url) { super.addURL(url); } /** * * @param urls - list of URLs to add to the thread's classloader */ public static void updateLoader(List<URL> urls) { DynamicClassLoader loader = (DynamicClassLoader) Thread.currentThread().getContextClassLoader(); for(URL url : urls) { loader.addURL(url); } } }