该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。这里假定任何以 '/' 结束的 URL 都是指向目录的。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件。 创建 URLClassLoader 实例的 AccessControlContext 线程将在后续加载类和资源时使用。 为加载的类默认授予只能访问 URLClassLoader 创建时指定的 URL 的权限。 clearAssertionStatus , defineClass , defineClass , defineClass , defineClass , definePackage , findLibrary , findLoadedClass , findSystemClass , getPackage , getPackages , getParent , getResource , getResourceAsStream , getResources , getSystemClassLoader , getSystemResource , getSystemResourceAsStream , getSystemResources , loadClass , loadClass , resolveClass , setClassAssertionStatus , setDefaultAssertionStatus , setPackageAssertionStatus , setSigners ClassLoader parent)
为给定的 URL 构造新 URLClassLoader。首先在指定的父类加载器中搜索 URL,然后按照为类和资源指定的顺序搜索 URL。这里假定任何以 '/' 结束的 URL 都是指向目录的。如果不是以该字符结束,则认为该 URL 指向一个将根据需要下载和打开的 JAR 文件。

如果有安全管理器,该方法首先调用安全管理器的 checkCreateClassLoader 方法以确保允许创建类加载器。

参数:
urls - 从其位置加载类和资源的 UR
parent - 用于委托的父类加载器
SecurityException - 如果存在安全管理器,且其 checkCreateClassLoader 方法不允许创建类加载器。
另请参见:
SecurityManager.checkCreateClassLoader()
public URLClassLoader ( URL [] urls)
使用默认的委托父 ClassLoader 为指定的 URL 构造一个新 URLClassLoader。首先在父类加载器中搜索 URL,然后按照为类和资源指定的顺序搜索 URL。这里假定任何以 '/' 结束的 URL 都是指向目录的。如果不是以该字符结束,则认为该 URL 指向一个将根据需要下载和打开的 JAR 文件。

如果有安全管理器,该方法首先调用安全管理器的 checkCreateClassLoader 方法以确保允许创建类加载器。

参数:
urls - 从其位置加载类和资源的 URL
SecurityException - 如果安全管理器存在并且其 checkCreateClassLoader 方法不允许创建类加载器。
另请参见:
SecurityManager.checkCreateClassLoader()
public URLClassLoader ( URL [] urls, ClassLoader parent, URLStreamHandlerFactory factory)
为指定的 URL、父类加载器和 URLStreamHandlerFactory 创建新 URLClassLoader。该父参数将充当委托的父类加载器。该工厂参数将充当创建新 jar URL 时获取协议处理程序的流处理程序工厂。

如果有安全管理器,该方法首先调用安全管理器的 checkCreateClassLoader 方法以确保允许创建类加载器。

参数:
urls - 从其位置加载类和资源的 URL
parent - 用于委托的父类加载器
factory - 创建 URL 时使用的 URLStreamHandlerFactory
SecurityException - 如果安全管理器存在并且其 checkCreateClassLoader 方法不允许创建类加载器。
另请参见:
SecurityManager.checkCreateClassLoader()
throws ClassNotFoundException
通过 URL 搜索路径查找并加载具有指定名称的类。只有在找到该类后,才能根据需要加载和打开任何指向 JAR 文件的 URL。
覆盖:
ClassLoader 中的 findClass
参数:
name - 类的名称
返回:
结果类
ClassNotFoundException - 如果无法找到该类
throws IllegalArgumentException
用该 ClassLoader 中的名称定义一个新包。该指定的 Manifest 中包含的属性将用于包含包版本和密封信息。对于密封的包,此附加 URL 从加载该包的 URL 指定代码源 URL。
参数:
name - 包的名称
man - 包含包的版本和密封信息的 Manifest
url - 包的代码源 url,或者如果没有,则为 null
返回:
新定义的 Package 对象
IllegalArgumentException - 如果包的名称与该类加载器或其祖先之一中现有的包重名
protected PermissionCollection getPermissions ( CodeSource codesource)
返回给定 codesource 对象的权限。该方法的实现首先调用 super.getPermissions,然后基于 codesource 的 URL 添加权限。 如果此 URL 的协议为 "jar",那么授予的权限将基于 Jar 文件 URL 所请求的权限。 如果协议为 "file",并且路径指定了某个文件,则要授予对该文件的读权限。如果协议为 "file",并且路径是一个目录,则要授予该目录中的所有文件及其(递归)子目录中包含的所有文件读权限。 如果协议不是 "file",则允许连接到和接收来自 URL 主机的连接。
覆盖:
SecureClassLoader 中的 getPermissions
参数:
codesource - codesource
返回:
授予 codesource 的权限
ClassLoader parent)
为指定的 URL 和父类加载器创建新 URLClassLoader 实例。如果安装了安全管理器,该方法返回的 URLClassLoader 的 loadClass 方法将在加载该类之前调用 SecurityManager.checkPackageAccess 方法。
参数:
urls - 用于搜索类和资源的 URL
parent - 用于委托的父类加载器
返回:
结果类加载器
public static URLClassLoader newInstance ( URL [] urls)
为指定的 URL 和默认的父类加载器创建新 URLClassLoader 实例。如果安装了安全管理器,该方法返回的 URLClassLoader 的 loadClass 方法将在加载该类之前调用 SecurityManager.checkPackageAccess
参数:
urls - 用于搜索类和资源的 URL
返回:
结果类加载器