Class ClasspathHelper
- java.lang.Object
-
- org.reflections.util.ClasspathHelper
-
public abstract class ClasspathHelper extends Object
Helper 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 ClassLoader[]
classLoaders(ClassLoader... classLoaders)
Returns an array of class Loaders initialized from the specified array.static String
cleanPath(URL url)
Cleans the URL.static ClassLoader
contextClassLoader()
Gets the current thread context class loader.static URL
forClass(Class<?> aClass, ClassLoader... classLoaders)
Returns the URL that contains aClass
.static Collection<URL>
forClassLoader()
Returns a distinct collection of URLs based on URLs derived from class loaders.static Collection<URL>
forClassLoader(ClassLoader... classLoaders)
Returns a distinct collection of URLs based on URLs derived from class loaders.static Collection<URL>
forJavaClassPath()
Returns a distinct collection of URLs based on thejava.class.path
system property.static Collection<URL>
forManifest()
Returns a distinct collection of URLs based on URLs derived from class loaders expanded with Manifest information.static Collection<URL>
forManifest(Iterable<URL> urls)
Returns a distinct collection of URLs by expanding the specified URLs with Manifest information.static Collection<URL>
forManifest(URL url)
Returns a distinct collection of URLs from a single URL based on the Manifest information.static Collection<URL>
forPackage(String name, ClassLoader... classLoaders)
Returns a distinct collection of URLs based on a package name.static Collection<URL>
forResource(String resourceName, ClassLoader... classLoaders)
Returns a distinct collection of URLs based on a resource.static URL
forWebInfClasses(javax.servlet.ServletContext servletContext)
Returns the URL of theWEB-INF/classes
folder.static Collection<URL>
forWebInfLib(javax.servlet.ServletContext servletContext)
Returns a distinct collection of URLs based on theWEB-INF/lib
folder.static ClassLoader
staticClassLoader()
Gets the class loader of this library.
-
-
-
Method Detail
-
contextClassLoader
public static ClassLoader contextClassLoader()
Gets the current thread context class loader.Thread.currentThread().getContextClassLoader()
.- Returns:
- the context class loader, may be null
-
staticClassLoader
public static ClassLoader staticClassLoader()
Gets the class loader of this library.Reflections.class.getClassLoader()
.- Returns:
- the static library class loader, may be null
-
classLoaders
public static ClassLoader[] classLoaders(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 Collection<URL> forPackage(String name, 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
ClassLoader
s 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 Collection<URL> forResource(String resourceName, 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
ClassLoader
s 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 URL forClass(Class<?> aClass, ClassLoader... classLoaders)
Returns the URL that contains aClass
.This searches for the class using
ClassLoader.getResource(String)
.If the optional
ClassLoader
s are not specified, then bothcontextClassLoader()
andstaticClassLoader()
are used forClassLoader.getResources(String)
.- Returns:
- the URL containing the class, null if not found
-
forClassLoader
public static Collection<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 Collection<URL> forClassLoader(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
ClassLoader
s 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 Collection<URL> forJavaClassPath()
Returns a distinct collection of URLs based on thejava.class.path
system property.This finds the URLs using the
java.class.path
system property.The returned collection of URLs retains the classpath order.
- Returns:
- the collection of URLs, not null
-
forWebInfLib
public static Collection<URL> forWebInfLib(javax.servlet.ServletContext servletContext)
Returns a distinct collection of URLs based on theWEB-INF/lib
folder.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 URL forWebInfClasses(javax.servlet.ServletContext servletContext)
Returns the URL of theWEB-INF/classes
folder.This finds the URLs using the
ServletContext
.- Returns:
- the collection of URLs, not null
-
forManifest
public static Collection<URL> forManifest()
Returns a distinct collection of URLs based on URLs derived from class loaders expanded with Manifest information.The
MANIFEST.MF
file can contain aClass-Path
entry 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 Collection<URL> forManifest(URL url)
Returns a distinct collection of URLs from a single URL based on the Manifest information.The
MANIFEST.MF
file can contain aClass-Path
entry 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 Collection<URL> forManifest(Iterable<URL> urls)
Returns a distinct collection of URLs by expanding the specified URLs with Manifest information.The
MANIFEST.MF
file can contain aClass-Path
entry 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
-
-