该类加载器用于从指向 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
返回:
结果类加载器