Class ClasspathHelper
- java.lang.Object
-
- org.reflections.util.ClasspathHelper
-
public abstract class ClasspathHelper extends java.lang.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 java.lang.ClassLoader[]
classLoaders(java.lang.ClassLoader... classLoaders)
Returns an array of class Loaders initialized from the specified array.static java.lang.String
cleanPath(java.net.URL url)
Cleans the URL.static java.lang.ClassLoader
contextClassLoader()
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.URL
forClass(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.path
system 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.URL
forWebInfClasses(javax.servlet.ServletContext servletContext)
Returns the URL of theWEB-INF/classes
folder.static java.util.Collection<java.net.URL>
forWebInfLib(javax.servlet.ServletContext servletContext)
Returns a distinct collection of URLs based on theWEB-INF/lib
folder.private static java.lang.String
resourceName(java.lang.String name)
static java.lang.ClassLoader
staticClassLoader()
Gets the class loader of this library.(package private) static java.net.URL
tryToGetValidUrl(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
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 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
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 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
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 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
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 java.util.Collection<java.net.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 java.util.Collection<java.net.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 java.net.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 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.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 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.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 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.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
-
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)
-
-