Class ClasspathHelper
- java.lang.Object
-
- org.reflections.util.ClasspathHelper
-
public abstract class ClasspathHelper extends java.lang.ObjectHelper methods for working with the classpath.
-
-
Constructor Summary
Constructors Constructor Description ClasspathHelper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.ClassLoader[]classLoaders(java.lang.ClassLoader... classLoaders)Returns an array of class Loaders initialized from the specified array.static java.lang.StringcleanPath(java.net.URL url)Cleans the URL.static java.lang.ClassLoadercontextClassLoader()Gets the current thread context class loader.private static java.util.Collection<java.net.URL>distinctUrls(java.util.Collection<java.net.URL> urls)static java.net.URLforClass(java.lang.Class<?> aClass, java.lang.ClassLoader... classLoaders)Returns the URL that contains aClass.static java.util.Collection<java.net.URL>forClassLoader()Returns a distinct collection of URLs based on URLs derived from class loaders.static java.util.Collection<java.net.URL>forClassLoader(java.lang.ClassLoader... classLoaders)Returns a distinct collection of URLs based on URLs derived from class loaders.static java.util.Collection<java.net.URL>forJavaClassPath()Returns a distinct collection of URLs based on thejava.class.pathsystem property.static java.util.Collection<java.net.URL>forManifest()Returns a distinct collection of URLs based on URLs derived from class loaders expanded with Manifest information.static java.util.Collection<java.net.URL>forManifest(java.lang.Iterable<java.net.URL> urls)Returns a distinct collection of URLs by expanding the specified URLs with Manifest information.static java.util.Collection<java.net.URL>forManifest(java.net.URL url)Returns a distinct collection of URLs from a single URL based on the Manifest information.static java.util.Collection<java.net.URL>forPackage(java.lang.String name, java.lang.ClassLoader... classLoaders)Returns a distinct collection of URLs based on a package name.static java.util.Collection<java.net.URL>forResource(java.lang.String resourceName, java.lang.ClassLoader... classLoaders)Returns a distinct collection of URLs based on a resource.static java.net.URLforWebInfClasses(javax.servlet.ServletContext servletContext)Returns the URL of theWEB-INF/classesfolder.static java.util.Collection<java.net.URL>forWebInfLib(javax.servlet.ServletContext servletContext)Returns a distinct collection of URLs based on theWEB-INF/libfolder.private static java.lang.StringresourceName(java.lang.String name)static java.lang.ClassLoaderstaticClassLoader()Gets the class loader of this library.(package private) static java.net.URLtryToGetValidUrl(java.lang.String workingDir, java.lang.String path, java.lang.String filename)
-
-
-
Method Detail
-
contextClassLoader
public static java.lang.ClassLoader contextClassLoader()
Gets the current thread context class loader.Thread.currentThread().getContextClassLoader().- Returns:
- the context class loader, may be null
-
staticClassLoader
public static java.lang.ClassLoader staticClassLoader()
Gets the class loader of this library.Reflections.class.getClassLoader().- Returns:
- the static library class loader, may be null
-
classLoaders
public static java.lang.ClassLoader[] classLoaders(java.lang.ClassLoader... classLoaders)
Returns an array of class Loaders initialized from the specified array.If the input is null or empty, it defaults to both
contextClassLoader()andstaticClassLoader()- Returns:
- the array of class loaders, not null
-
forPackage
public static java.util.Collection<java.net.URL> forPackage(java.lang.String name, java.lang.ClassLoader... classLoaders)Returns a distinct collection of URLs based on a package name.This searches for the package name as a resource, using
ClassLoader.getResources(String). For example,forPackage(org.reflections)effectively returns URLs from the classpath containing packages starting withorg.reflections.If the optional
ClassLoaders are not specified, then bothcontextClassLoader()andstaticClassLoader()are used forClassLoader.getResources(String).The returned URLs retainsthe order of the given
classLoaders.- Returns:
- the collection of URLs, not null
-
forResource
public static java.util.Collection<java.net.URL> forResource(java.lang.String resourceName, java.lang.ClassLoader... classLoaders)Returns a distinct collection of URLs based on a resource.This searches for the resource name, using
ClassLoader.getResources(String). For example,forResource(test.properties)effectively returns URLs from the classpath containing files of that name.If the optional
ClassLoaders are not specified, then bothcontextClassLoader()andstaticClassLoader()are used forClassLoader.getResources(String).The returned URLs retains the order of the given
classLoaders.- Returns:
- the collection of URLs, not null
-
forClass
public static java.net.URL forClass(java.lang.Class<?> aClass, java.lang.ClassLoader... classLoaders)Returns the URL that contains aClass.This searches for the class using
ClassLoader.getResource(String).If the optional
ClassLoaders are not specified, then bothcontextClassLoader()andstaticClassLoader()are used forClassLoader.getResources(String).- Returns:
- the URL containing the class, null if not found
-
forClassLoader
public static java.util.Collection<java.net.URL> forClassLoader()
Returns a distinct collection of URLs based on URLs derived from class loaders.This finds the URLs using
URLClassLoader.getURLs()using bothcontextClassLoader()andstaticClassLoader().The returned URLs retains the order of the given
classLoaders.- Returns:
- the collection of URLs, not null
-
forClassLoader
public static java.util.Collection<java.net.URL> forClassLoader(java.lang.ClassLoader... classLoaders)
Returns a distinct collection of URLs based on URLs derived from class loaders.This finds the URLs using
URLClassLoader.getURLs()using the specified class loader, searching up the parent hierarchy.If the optional
ClassLoaders are not specified, then bothcontextClassLoader()andstaticClassLoader()are used forClassLoader.getResources(String).The returned URLs retains the order of the given
classLoaders.- Returns:
- the collection of URLs, not null
-
forJavaClassPath
public static java.util.Collection<java.net.URL> forJavaClassPath()
Returns a distinct collection of URLs based on thejava.class.pathsystem property.This finds the URLs using the
java.class.pathsystem property.The returned collection of URLs retains the classpath order.
- Returns:
- the collection of URLs, not null
-
forWebInfLib
public static java.util.Collection<java.net.URL> forWebInfLib(javax.servlet.ServletContext servletContext)
Returns a distinct collection of URLs based on theWEB-INF/libfolder.This finds the URLs using the
ServletContext.The returned URLs retains the order of the given
classLoaders.- Returns:
- the collection of URLs, not null
-
forWebInfClasses
public static java.net.URL forWebInfClasses(javax.servlet.ServletContext servletContext)
Returns the URL of theWEB-INF/classesfolder.This finds the URLs using the
ServletContext.- Returns:
- the collection of URLs, not null
-
forManifest
public static java.util.Collection<java.net.URL> forManifest()
Returns a distinct collection of URLs based on URLs derived from class loaders expanded with Manifest information.The
MANIFEST.MFfile can contain aClass-Pathentry that defines additional jar files to be included on the classpath. This method finds the jar files using thecontextClassLoader()andstaticClassLoader(), before searching for any additional manifest classpaths.- Returns:
- the collection of URLs, not null
-
forManifest
public static java.util.Collection<java.net.URL> forManifest(java.net.URL url)
Returns a distinct collection of URLs from a single URL based on the Manifest information.The
MANIFEST.MFfile can contain aClass-Pathentry that defines additional jar files to be included on the classpath. This method takes a single URL, tries to resolve it as a jar file, and if so, adds any additional manifest classpaths. The returned collection of URLs will always contain the input URL.- Returns:
- the collection of URLs, not null
-
forManifest
public static java.util.Collection<java.net.URL> forManifest(java.lang.Iterable<java.net.URL> urls)
Returns a distinct collection of URLs by expanding the specified URLs with Manifest information.The
MANIFEST.MFfile can contain aClass-Pathentry that defines additional jar files to be included on the classpath. This method takes each URL in turn, tries to resolve it as a jar file, and if so, adds any additional manifest classpaths. The returned collection of URLs will always contain all the input URLs.The returned URLs retains the input order.
- Returns:
- the collection of URLs, not null
-
tryToGetValidUrl
static java.net.URL tryToGetValidUrl(java.lang.String workingDir, java.lang.String path, java.lang.String filename)
-
cleanPath
public static java.lang.String cleanPath(java.net.URL url)
Cleans the URL.- Parameters:
url- the URL to clean, not null- Returns:
- the path, not null
-
resourceName
private static java.lang.String resourceName(java.lang.String name)
-
distinctUrls
private static java.util.Collection<java.net.URL> distinctUrls(java.util.Collection<java.net.URL> urls)
-
-