The URLClassLoader class was created specifically to facilitate the downloading of classes over a network. Three constructors are provided, the first of which simply takes a URL[] as an argument using the default ClassLoader.
Code:
URLClassLoader(URL[] urls)
URLClassLoader(URL[] urls, ClassLoader parent)
URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
If the URL or URL's stored within the URL[] end with '/' then a directory is assumed or a .jar file can be specified.
Code:
import java.net.URL;
import java.net.URLClassLoader;
import java.net.MalformedURLException;
public class NetworkClassLoader{
public static void main(String[] args){
URLClassLoader urlcl = null;
Class c = null;
try{
urlcl = new URLClassLoader(new URL[]{new URL("http://www.javacourses.com/classes/test.jar")});
}catch(MalformedURLException me){
System.out.println(me + " is not a valid URL");
}
try{
c = urlcl.loadClass("Tester");
}catch(ClassNotFoundException cnf){
System.out.println("Class could not be found");
}
try{
Object o = c.newInstance();
}catch(InstantiationException ie){
System.out.println("Could not create an instance of the class");
}catch(IllegalAccessException iae){
}
}
}