code: protected void addAllClassLoaderJarRoots(ClassLoader classLoader, Set<Resource> result) {
  		if (classLoader instanceof URLClassLoader) {
  			try {
  				for (URL url : ((URLClassLoader) classLoader).getURLs()) {
  					if (ResourceUtils.isJarFileURL(url)) {
  						try {
  							UrlResource jarResource = new UrlResource(
  									ResourceUtils.JAR_URL_PREFIX + url.toString() + ResourceUtils.JAR_URL_SEPARATOR);
  							if (jarResource.exists()) {
  								result.add(jarResource);
  							}
  						}
  						catch (MalformedURLException ex) {
  							if (logger.isDebugEnabled()) {
  								logger.debug("Cannot search for matching files underneath [" + url +
  										"] because it cannot be converted to a valid 'jar:' URL: " + ex.getMessage());
  							}
  						}
  					}
  				}
  			}
  			catch (Exception ex) {
  				if (logger.isDebugEnabled()) {
  					logger.debug("Cannot introspect jar files since ClassLoader [" + classLoader +
  							"] does not support 'getURLs()': " + ex);
  				}
  			}
  		}
  		if (classLoader != null) {
  			try {
  				addAllClassLoaderJarRoots(classLoader.getParent(), result);
  			}
  			catch (Exception ex) {
  				if (logger.isDebugEnabled()) {
  					logger.debug("Cannot introspect jar files in parent ClassLoader since [" + classLoader +
  							"] does not support 'getParent()': " + ex);
  				}
  			}
  		}
  	}
docs: Search all {@link URLClassLoader} URLs for jar file references and add them to the
  given set of resources in the form of pointers to the root of the jar file content.
  @param classLoader the ClassLoader to search (including its ancestors)
  @param result the set of resources to add jar roots to