guava/src/com/google/common/reflect/ClassPath.java
public static ClassPath from(ClassLoader classloader) throws IOException {
    DefaultScanner scanner = new DefaultScanner();
    scanner.scan(classloader);
    return new ClassPath(scanner.getResources());
  }
public static ClassPath from(ClassLoader classloader) throws IOException {
    DefaultScanner scanner = new DefaultScanner();
    scanner.scan(classloader);
    return new ClassPath(scanner.getResources());
  }
Returns a {@code ClassPath} representing all classes and resources loadable from {@code
classloader} and its ancestor class loaders.

<p><b>Warning:</b> {@code ClassPath} can find classes and resources only from:

<ul>
<li>{@link URLClassLoader} instances' {@code file:} URLs
<li>the {@linkplain ClassLoader#getSystemClassLoader() system class loader}. To search the
system class loader even when it is not a {@link URLClassLoader} (as in Java 9), {@code
ClassPath} searches the files from the {@code java.class.path} system property.
</ul>

@throws IOException if the attempt to read class path resources (jar files or directories)
failed.