@@ -405,33 +405,36 @@ public static ObjectInputStream readStreamFromString(String filenameOrUrl)
405405
406406  /** 
407407   * Locates a file in the CLASSPATH if it exists.  Checks both the 
408-    * System classloader and the IOUtils classloader, since we had 
408+    * current thread context classloader which default to the system class classloader unless the user sets another 
409+    * classloader explicitly, then we fallaback to the IOUtils classloader, since we had 
409410   * separate users asking for both of those changes. 
410411   */ 
411412  private  static  InputStream  findStreamInClassLoader (String  name ) {
412-     InputStream  is  = ClassLoader .getSystemResourceAsStream (name );
413+     ClassLoader  contextClassLoader  = Thread .currentThread ().getContextClassLoader ();
414+     InputStream  is  = contextClassLoader .getResourceAsStream (name );
413415    if  (is  != null )
414416      return  is ;
415417
416418    // windows File.separator is \, but getting resources only works with / 
417-     is  = ClassLoader . getSystemResourceAsStream (name .replaceAll ("\\ \\ " , "/" ));
419+     is  = contextClassLoader . getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ));
418420    if  (is  != null )
419421      return  is ;
420422
421423    // Classpath doesn't like double slashes (e.g., /home/user//foo.txt) 
422-     is  = ClassLoader . getSystemResourceAsStream (name .replaceAll ("\\ \\ " , "/" ).replaceAll ("/+" , "/" ));
424+     is  = contextClassLoader . getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ).replaceAll ("/+" , "/" ));
423425    if  (is  != null )
424426      return  is ;
425427
426-     is  = IOUtils .class .getClassLoader ().getResourceAsStream (name );
428+     ClassLoader  fallbackClassLoader  = IOUtils .class .getClassLoader ();
429+     is  = fallbackClassLoader .getResourceAsStream (name );
427430    if  (is  != null )
428431      return  is ;
429432
430-     is  = IOUtils . class . getClassLoader () .getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ));
433+     is  = fallbackClassLoader .getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ));
431434    if  (is  != null )
432435      return  is ;
433436
434-     is  = IOUtils . class . getClassLoader () .getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ).replaceAll ("/+" , "/" ));
437+     is  = fallbackClassLoader .getResourceAsStream (name .replaceAll ("\\ \\ " , "/" ).replaceAll ("/+" , "/" ));
435438    // at this point we've tried everything 
436439    return  is ;
437440  }
0 commit comments