code: public static URL getResource(String resourceName, Class<?> callingClass) {
      URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName);
      if (url != null) return url;
  
      url = ClassLoaders.class.getClassLoader().getResource(resourceName);
      if (url != null) return url;
  
      ClassLoader cl = callingClass.getClassLoader();
      if (cl != null) url = cl.getResource(resourceName);
      return url;
    }
docs: Load a given resource(Cannot start with slash /).
  <p/>
  This method will try to load the resource using the following methods (in order):
  <ul>
  <li>From {@link Thread#getContextClassLoader() Thread.currentThread().getContextClassLoader()}
  <li>From {@link Class#getClassLoader() ClassLoaders.class.getClassLoader()}
  <li>From the {@link Class#getClassLoader() callingClass.getClassLoader() }
  </ul>
  
  @param resourceName The name of the resource to load
  @param callingClass The Class object of the calling object