- 所有已实现的接口:
Closeable,AutoCloseable
- 已知子类:
MLet
jar: 方案 URL(请参阅 JarURLConnection )引用 JAR 文件。假定以“/”结尾的任何 file: 方案 URL 都指向一个目录。否则,假定 URL 引用一个 JAR 文件,该文件将在需要时打开。
该类加载器支持从给定 URL 引用的 多版本JAR 文件的内容加载类和资源。
创建 URLClassLoader 实例的线程的 AccessControlContext 将在随后加载类和资源时使用。
默认情况下,加载的类仅被授予访问创建 URLClassLoader 时指定的 URL 的权限。
- 自从:
- 1.2
-
构造方法总结
构造方法构造方法描述URLClassLoader(String name, URL[] urls, ClassLoader parent) 为指定的 URL 构造一个新的命名URLClassLoader。URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的名为URLClassLoader的对象。URLClassLoader(URL[] urls) 使用默认委托父级ClassLoader为指定的 URL 构造一个新的 URLClassLoader。URLClassLoader(URL[] urls, ClassLoader parent) 为给定的 URL 构造一个新的 URLClassLoader。URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 为指定的 URL、父类加载器和URLStreamHandlerFactory 构造一个新的 URLClassLoader。 -
方法总结
修饰符和类型方法描述protected void将指定的 URL 附加到 URL 列表以搜索类和资源。voidclose()关闭此 URLClassLoader,以便它不能再用于加载由此加载程序定义的新类或资源。protected PackagedefinePackage(String name, Manifest man, URL url) 在此URLClassLoader中按名称定义新包。protected Class<?>从 URL 搜索路径中查找并加载具有指定名称的类。findResource(String name) 在 URL 搜索路径上查找具有指定名称的资源。findResources(String name) 返回一个 URL 枚举,表示 URL 搜索路径上具有指定名称的所有资源。protected PermissionCollectiongetPermissions(CodeSource codesource) 返回给定代码源对象的权限。getResourceAsStream(String name) 返回用于读取指定资源的输入流。URL[]getURLs()返回用于加载类和资源的 URL 的搜索路径。static URLClassLoadernewInstance(URL[] urls) 为指定的 URL 和默认父类加载器创建 URLClassLoader 的新实例。static URLClassLoadernewInstance(URL[] urls, ClassLoader parent) 为指定的 URL 和父类加载器创建 URLClassLoader 的新实例。在类 java.security.SecureClassLoader 中声明的方法
defineClass, defineClass在类 java.lang.ClassLoader 中声明的方法
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
构造方法详细信息
-
URLClassLoader
为给定的 URL 构造一个新的 URLClassLoader。在指定的父类加载器中首先搜索后,将按照为类和资源指定的顺序搜索 URL。假定任何jar:方案 URL 都指向一个 JAR 文件。假定以“/”结尾的任何file:方案 URL 都指向一个目录。否则,假定 URL 引用一个 JAR 文件,该文件将根据需要下载和打开。如果有安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader方法以确保允许创建类加载器。- 参数:
urls- 从中加载类和资源的 URLparent- 委托的父类加载器- 抛出:
SecurityException- 如果安全管理器存在并且其checkCreateClassLoader方法不允许创建类加载器。NullPointerException- 如果urls或其任何元素是null。- 参见:
-
URLClassLoader
使用默认委托父级ClassLoader为指定的 URL 构造一个新的 URLClassLoader。在父类加载器中首次搜索后,将按照为类和资源指定的顺序搜索 URL。假定以“/”结尾的任何 URL 都指向一个目录。否则,假定 URL 引用一个 JAR 文件,该文件将根据需要下载和打开。如果有安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader方法以确保允许创建类加载器。- 参数:
urls- 从中加载类和资源的 URL- 抛出:
SecurityException- 如果安全管理器存在并且其checkCreateClassLoader方法不允许创建类加载器。NullPointerException- 如果urls或其任何元素是null。- 参见:
-
URLClassLoader
为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的 URLClassLoader。 parent 参数将用作委托的父类加载器。工厂参数将用作流处理程序工厂,以在创建新的 jar URL 时获取协议处理程序。如果有安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader方法以确保允许创建类加载器。- 参数:
urls- 从中加载类和资源的 URLparent- 委托的父类加载器factory- 创建 URL 时要使用的 URLStreamHandlerFactory- 抛出:
SecurityException- 如果安全管理器存在并且其checkCreateClassLoader方法不允许创建类加载器。NullPointerException- 如果urls或其任何元素是null。- 参见:
-
URLClassLoader
为指定的 URL 构造一个新的命名URLClassLoader。在指定的父类加载器中首先搜索后,将按照为类和资源指定的顺序搜索 URL。假定以“/”结尾的任何 URL 都指向一个目录。否则,假定 URL 引用一个 JAR 文件,该文件将根据需要下载和打开。- 参数:
name- 类加载器名称;或者null如果没有命名urls- 从中加载类和资源的 URLparent- 委托的父类加载器- 抛出:
IllegalArgumentException- 如果给定名称为空。NullPointerException- 如果urls或其任何元素是null。SecurityException- 如果安全管理器存在且其SecurityManager.checkCreateClassLoader()方法不允许创建类加载器。- 自从:
- 9
-
URLClassLoader
public URLClassLoader(String name, URL [] urls, ClassLoader parent, URLStreamHandlerFactory factory) 为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的名为URLClassLoader的对象。 parent 参数将用作委托的父类加载器。工厂参数将用作流处理程序工厂,以在创建新的 jar URL 时获取协议处理程序。- 参数:
name- 类加载器名称;或者null如果没有命名urls- 从中加载类和资源的 URLparent- 委托的父类加载器factory- 创建 URL 时要使用的 URLStreamHandlerFactory- 抛出:
IllegalArgumentException- 如果给定名称为空。NullPointerException- 如果urls或其任何元素是null。SecurityException- 如果安全管理器存在并且其checkCreateClassLoader方法不允许创建类加载器。- 自从:
- 9
-
-
方法详情
-
getResourceAsStream
返回用于读取指定资源的输入流。如果此加载程序关闭,则此方法打开的任何资源都将关闭。ClassLoader.getResource(String)的文档中描述了搜索顺序。- 重写:
getResourceAsStream在类ClassLoader中- 参数:
name- 资源名称- 返回:
-
用于读取资源的输入流,如果找不到资源,则返回
null - 抛出:
NullPointerException- 如果name是null- 自从:
- 1.7
-
close
关闭此 URLClassLoader,以便它不能再用于加载由此加载程序定义的新类或资源。委托层次结构中此加载器的任何父代定义的类和资源仍然可以访问。此外,任何已经加载的类或资源仍然可以访问。对于 jar: 和 file: URL,它还会关闭它打开的所有文件。如果在调用
close方法时另一个线程正在加载一个类,则该加载的结果是未定义的。该方法通过在内部捕获
IOException来尽最大努力尝试关闭所有打开的文件。未经检查的异常和错误不会被捕获。在已经关闭的加载器上调用 close 没有任何效果。- 指定者:
close在接口AutoCloseable中- 指定者:
close在接口Closeable中- 抛出:
IOException- 如果关闭由此类加载器打开的任何文件导致 IOException。任何此类异常都会在内部捕获。如果只捕获到一个,则将其重新抛出。如果捕获了多个异常,则将第二个和后续异常添加为捕获的第一个异常的抑制异常,然后重新抛出。SecurityException- 如果设置了安全管理器,它拒绝RuntimePermission("closeClassLoader")- 自从:
- 1.7
-
addURL
将指定的 URL 附加到 URL 列表以搜索类和资源。如果指定的 URL 是
null或已经在 URL 列表中,或者如果此加载程序已关闭,则调用此方法无效。- 参数:
url- 要添加到 URL 搜索路径的 URL
-
getURLs
返回用于加载类和资源的 URL 的搜索路径。这包括指定给构造方法的原始 URL 列表,以及随后由 addURL() 方法附加的任何 URL。- 返回:
- 用于加载类和资源的 URL 的搜索路径。
-
findClass
从 URL 搜索路径中查找并加载具有指定名称的类。任何引用 JAR 文件的 URL 都会根据需要加载和打开,直到找到该类。- 重写:
findClass在类ClassLoader中- 参数:
name- 类名称- 返回:
- 结果类
- 抛出:
ClassNotFoundException- 如果找不到该类,或者加载程序已关闭。NullPointerException- 如果name是null。
-
definePackage
在此URLClassLoader中按名称定义新包。指定Manifest中包含的属性将用于获取包版本和密封信息。对于密封包,附加 URL 指定从中加载包的代码源 URL。- 参数:
name- 包名man- 包含封装版本和密封信息的Manifesturl- 包的代码源 url,如果没有则为 null- 返回:
-
新定义的
Package对象 - 抛出:
IllegalArgumentException- 如果这个类加载器已经定义了包名
-
findResource
在 URL 搜索路径上查找具有指定名称的资源。- 重写:
findResource在类ClassLoader中- 参数:
name- 资源名称- 返回:
URL用于资源,或者null如果找不到资源,或者加载程序已关闭。
-
findResources
返回一个 URL 枚举,表示 URL 搜索路径上具有指定名称的所有资源。- 重写:
findResources在类ClassLoader中- 参数:
name- 资源名称- 返回:
URL的Enumeration。如果加载程序已关闭,则 Enumeration 不包含任何元素。- 抛出:
IOException- 如果发生 I/O 异常
-
getPermissions
返回给定代码源对象的权限。该方法的实现首先调用super.getPermissions,然后根据codesource的URL添加权限。如果此 URL 的协议是“jar”,则授予的权限基于 Jar 文件的 URL 所需的权限。
如果协议是“文件”并且有权限组件,则可以授予连接到该权限并接受来自该权限的连接的权限。如果协议是“文件”并且路径指定了一个文件,则授予读取该文件的权限。如果协议是“文件”并且路径是目录,则授予读取所有文件以及(递归地)该目录中包含的所有文件和子目录的权限。
如果协议不是“文件”,则授予连接到 URL 主机并接受来自 URL 主机的连接的权限。
- 重写:
getPermissions在类SecureClassLoader中- 参数:
codesource- 代码源- 返回:
- 授予代码源的权限
- 抛出:
NullPointerException- 如果codesource是null。
-
newInstance
为指定的 URL 和父类加载器创建 URLClassLoader 的新实例。如果安装了安全管理器,则此方法返回的 URLClassLoader 的loadClass方法将在加载类之前调用SecurityManager.checkPackageAccess方法。- 参数:
urls- 用于搜索类和资源的 URLparent- 委托的父类加载器- 返回:
- 生成的类加载器
- 抛出:
NullPointerException- 如果urls或其任何元素是null。
-
newInstance
为指定的 URL 和默认父类加载器创建 URLClassLoader 的新实例。如果安装了安全管理器,则此方法返回的 URLClassLoader 的loadClass方法将在加载类之前调用SecurityManager.checkPackageAccess。- 参数:
urls- 用于搜索类和资源的 URL- 返回:
- 生成的类加载器
- 抛出:
NullPointerException- 如果urls或其任何元素是null。
-