com.google.common.reflect

## Class ClassPath

- java.lang.Object
- - com.google.common.reflect.ClassPath

-     @Beta
      public final class ClassPath
      extends java.lang.Object

  Scans the source of a `ClassLoader` and finds all loadable classes and resources.
  Since:
    14.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ClassPath.ClassInfo` Represents a class that can be loaded through `ClassPath.ClassInfo.load()`.
    `static class` | `ClassPath.ResourceInfo` Represents a class path resource that can be either a class file or any other resource file loadable from the class path.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static ClassPath` | `from(java.lang.ClassLoader classloader)` Returns a `ClassPath` representing all classes and resources loadable from `classloader` and its parent class loaders.
    `ImmutableSet<ClassPath.ClassInfo>` | `getAllClasses()` Returns all classes loadable from the current class path.
    `ImmutableSet<ClassPath.ResourceInfo>` | `getResources()` Returns all resources loadable from the current class path, including the class files of all loadable classes but excluding the "META-INF/MANIFEST.MF" file.
    `ImmutableSet<ClassPath.ClassInfo>` | `getTopLevelClasses()` Returns all top level classes loadable from the current class path.
    `ImmutableSet<ClassPath.ClassInfo>` | `getTopLevelClasses(java.lang.String packageName)` Returns all top level classes whose package name is `packageName`.
    `ImmutableSet<ClassPath.ClassInfo>` | `getTopLevelClassesRecursive(java.lang.String packageName)` Returns all top level classes whose package name is `packageName` or starts with `packageName` followed by a '.'.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### from

          public static ClassPath from(java.lang.ClassLoader classloader)
                                throws java.io.IOException

      Returns a `ClassPath` representing all classes and resources loadable from `classloader` and its parent class loaders.

      Currently only `URLClassLoader` and only `file://` urls are supported.

      Throws:
        `java.io.IOException` - if the attempt to read class path resources (jar files or directories) failed.

    - #### getResources

          public ImmutableSet<ClassPath.ResourceInfo> getResources()

      Returns all resources loadable from the current class path, including the class files of all loadable classes but excluding the "META-INF/MANIFEST.MF" file.

    - #### getAllClasses

          public ImmutableSet<ClassPath.ClassInfo> getAllClasses()

      Returns all classes loadable from the current class path.
      Since:
        16.0

    - #### getTopLevelClasses

          public ImmutableSet<ClassPath.ClassInfo> getTopLevelClasses()

      Returns all top level classes loadable from the current class path.

    - #### getTopLevelClasses

          public ImmutableSet<ClassPath.ClassInfo> getTopLevelClasses(java.lang.String packageName)

      Returns all top level classes whose package name is `packageName`.

    - #### getTopLevelClassesRecursive

          public ImmutableSet<ClassPath.ClassInfo> getTopLevelClassesRecursive(java.lang.String packageName)

      Returns all top level classes whose package name is `packageName` or starts with `packageName` followed by a '.'.