- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- 已知直接子类:
-
URLClassLoader
public class SecureClassLoaderextends ClassLoader
此类扩展了ClassLoader,并为定义具有相关代码源和权限的类提供了额外支持,这些代码源和权限默认情况下由系统策略检索。- 从以下版本开始:
- 1.2
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
SecureClassLoader()
使用默认的父类加载器创建新的SecureClassLoader以进行委派。protected
SecureClassLoader(ClassLoader parent)
使用指定的父类加载器创建新的SecureClassLoader以进行委派。protected
SecureClassLoader(String name, ClassLoader parent)
创建具有指定名称的新SecureClassLoader
,并使用指定的父类加载器进行委派。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 protected 类<?>
defineClass(String name, byte[] b, int off, int len, CodeSource cs)
使用可选的CodeSource将字节数组转换为类Class的实例。protected 类<?>
defineClass(String name, ByteBuffer b, CodeSource cs)
将ByteBuffer
转换为类类
的实例,并带有可选的CodeSource。protected PermissionCollection
getPermissions(CodeSource codesource)
返回给定CodeSource对象的权限。-
声明方法的类 java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
构造方法详细信息
-
SecureClassLoader
protected SecureClassLoader(ClassLoader parent)
使用指定的父类加载器创建新的SecureClassLoader以进行委派。如果有安全管理器,则此方法首先调用安全管理器的
checkCreateClassLoader
方法,以确保允许创建类加载器。- 参数
-
parent
- 父类ClassLoader - 异常
-
SecurityException
- 如果存在安全管理器且其checkCreateClassLoader
方法不允许创建类加载器。 - 另请参见:
-
SecurityManager.checkCreateClassLoader()
-
SecureClassLoader
protected SecureClassLoader()
使用默认的父类加载器创建新的SecureClassLoader以进行委派。如果有安全管理器,则此方法首先调用安全管理器的
checkCreateClassLoader
方法,以确保允许创建类加载器。- 异常
-
SecurityException
- 如果存在安全管理器且其checkCreateClassLoader
方法不允许创建类加载器。 - 另请参见:
-
SecurityManager.checkCreateClassLoader()
-
SecureClassLoader
protected SecureClassLoader(String name, ClassLoader parent)
创建具有指定名称的新SecureClassLoader
,并使用指定的父类加载器进行委派。- 参数
-
name
- 类加载器名称; 或null
如果没有命名 -
parent
- 父类加载器 - 异常
-
IllegalArgumentException
- 如果给定名称为空。 -
SecurityException
- 如果存在安全管理器且其SecurityManager.checkCreateClassLoader()
方法不允许创建类加载器。 - 从以下版本开始:
- 9
-
-
方法详细信息
-
defineClass
protected final 类<?> defineClass(String name, byte[] b, int off, int len, CodeSource cs)
使用可选的CodeSource将字节数组转换为类Class的实例。 在可以使用该类之前,必须解决它。如果提供了非null的CodeSource,则构造ProtectionDomain并将其与正在定义的类相关联。
- 参数
-
name
- 类的预期名称,或null
如果未知),使用'。' 而不是'/'作为分隔符,没有尾随的“.class”后缀。 -
b
- 组成类数据的字节。 位置off
到off+len-1
的字节应具有The Java™ Virtual Machine Specification定义的有效类文件的格式。 -
off
- 类数据的b
中的起始偏移量 -
len
- 类数据的长度 -
cs
- 关联的CodeSource,如果没有,null
- 结果
- 从数据创建的
类
对象,以及可选的CodeSource。 - 异常
-
ClassFormatError
- 如果数据不包含有效类 -
IndexOutOfBoundsException
- 如果off
或len
为负数,或者off+len
大于b.length
。 -
SecurityException
- 如果尝试将此类添加到包含由与此类不同的证书集签名的类的包,或者类名以“java。”开头。
-
defineClass
protected final 类<?> defineClass(String name, ByteBuffer b, CodeSource cs)
将ByteBuffer
转换为类类
的实例,并带有可选的CodeSource。 在可以使用该类之前,必须解决它。如果提供了非null的CodeSource,则构造ProtectionDomain并将其与正在定义的类相关联。
- 参数
-
name
- 类的预期名称,或null
如果未知),使用'。' 而不是'/'作为分隔符,没有尾随的“.class”后缀。 -
b
- 组成类数据的字节数。 位置b.position()
至b.position() + b.limit() -1
的字节应具有The Java™ Virtual Machine Specification定义的有效类文件的格式。 -
cs
- 关联的CodeSource,如果没有,null
- 结果
- 从数据创建的
类
对象,以及可选的CodeSource。 - 异常
-
ClassFormatError
- 如果数据不包含有效类 -
SecurityException
- 如果尝试将此类添加到包含由与此类不同的证书集签名的类的包,或者类名以“java。”开头。 - 从以下版本开始:
- 1.5
-
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource)
返回给定CodeSource对象的权限。这个方法由defineClass方法调用,该方法在为正在定义的类构造ProtectionDomain时将CodeSource作为参数。
- 参数
-
codesource
- 代码源。 - 结果
- the permissions granted to the codesource.
-
-