Click here to Skip to main content
15,437,709 members
Articles / Programming Languages / Java
Posted 20 Jan 2011

Tagged as


3 bookmarked

Adding class paths to SystemClassLoader

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
23 Jan 2011CPOL
How to add class paths to SystemClassLoader.


This article is a non-recommended hack for dynamically adding a class path to SystemClassLoader. You should re-think your design before using this hack; usually, you should be able to use URLClassLoader to load whatever you want.

About SystemClassLoader

SystemClassLoaders are usually URLClassLoaders, and in URLClassLoader, there is a method called addURL(), so we can make use of this to add paths/jars to SystemClassLoader dynamically at runtime. However, since "addURL()" is a protected method, we have to use Reflection to call it.

The sample code is as follows:

public static void addURLs(URL[] urls) {
  ClassLoader cl = ClassLoader.getSystemClassLoader();
  if ( cl instanceof URLClassLoader ) {
    URLClassLoader ul = (URLClassLoader)cl;
    // addURL is a protected method, but we can use reflection to call it
    Class<?>[] paraTypes = new Class[1];
    paraTypes[0] = URL.class;
    Method method = URLClassLoader.class.getDeclaredMethod("addURL", paraTypes);
    // change access to true, otherwise, it will throw exception
    Object[] args = new Object[1];
    for(int i=0; i<urls.length; i++) {
      args[0] = urls[i];
      method.invoke(ul, args);
  } else {
    // SystemClassLoader is not URLClassLoader....


I have written a test case, and it will automatically load all "lib/*.jar" and instantiate an object as specified in args[0]. The test output is as follows. Note: I only included "bin" as my class path, and I have commons-collections.jar under my "lib" directory, but the program is still able to dynamically load the required class.

Image 1


  • 2010.01.20: First draft.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Written By
Hong Kong Hong Kong
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

GeneralInteresting, but well known and not recommended hack Pin
Alexandre Nikolov20-Jan-11 22:19
MemberAlexandre Nikolov20-Jan-11 22:19 
GeneralRe: Interesting, but well known and not recommended hack Pin
Sam NG23-Jan-11 16:50
MemberSam NG23-Jan-11 16:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.