- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- 已知直接子类:
-
URLClassLoader
public class SecureClassLoader extends ClassLoader
此类扩展了ClassLoader,其额外支持用于定义具有相关代码源和权限的类,默认情况下系统策略将检索该类。- 从以下版本开始:
- 1.2
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SecureClassLoader()
使用默认的父类加载器创建一个新的SecureClassLoader进行委派。protected
SecureClassLoader(ClassLoader parent)
使用指定的父类加载器创建新的SecureClassLoader进行委派。protected
SecureClassLoader(String name, ClassLoader parent)
创建指定名称的新的SecureClassLoader
并使用指定的父类加载器进行委派。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected Class<?>
defineClass(String name, byte[] b, int off, int len, CodeSource cs)
将字节数组转换为类Class的实例,并具有可选的CodeSource。protected Class<?>
defineClass(String name, ByteBuffer b, CodeSource cs)
一个转换ByteBuffer
成类的实例Class
,使用可选的CodeSource。protected PermissionCollection
getPermissions(CodeSource codesource)
返回给定CodeSource对象的权限。-
Methods inherited from class 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
- 父类加载器 - 异常
-
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 Class<?> defineClass(String name, byte[] b, int off, int len, CodeSource cs)
将字节数组转换为类Class的实例,并具有可选的CodeSource。 在课堂可以使用之前,必须解决。如果提供非空CodeSource,则构造ProtectionDomain并与正在定义的类相关联。
- 参数
-
name
- 类的预期名称,或null
如果不知道,使用'。' 而不是'/'作为分隔符,没有尾随的“.class”后缀。 -
b
- 构成类数据的字节。 位置off
至off+len-1
的字节应具有由The Java™ Virtual Machine Specification定义的有效类文件的格式。 -
off
- 类数据中的起始偏移量为b
-
len
- 类数据的长度 -
cs
- 相关的CodeSource,如果没有,null
- 结果
-
从数据创建的
Class
对象,以及可选的CodeSource。 - 异常
-
ClassFormatError
- 如果数据不包含有效的类 -
IndexOutOfBoundsException
- 如果off
或len
为负数,或者如果off+len
大于b.length
。 -
SecurityException
- 如果尝试将此类添加到包含由不同于该类的不同证书集签名的类的包中,或者类名以“java”开头。
-
defineClass
protected final Class<?> defineClass(String name, ByteBuffer b, CodeSource cs)
一个转换ByteBuffer
成类的实例Class
,使用可选的CodeSource。 在课堂可以使用之前,必须解决。如果提供非空CodeSource,则构造ProtectionDomain并与正在定义的类相关联。
- 参数
-
name
- 类的预期名称,如果不知道,null
,使用'。' 而不是'/'作为分隔符,没有尾随的“.class”后缀。 -
b
- 构成类数据的字节。 位置b.position()
至b.position() + b.limit() -1
的字节应具有由The Java™ Virtual Machine Specification定义的有效类文件的格式。 -
cs
- 相关的CodeSource,如果没有,null
- 结果
-
从数据创建的
Class
对象,以及可选的CodeSource。 - 异常
-
ClassFormatError
- 如果数据不包含有效的类 -
SecurityException
- 如果尝试将此类添加到包含由不同于该类的不同证书集签名的类的包中,或者类名以“java”开头。 - 从以下版本开始:
- 1.5
-
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource)
返回给定CodeSource对象的权限。该方法由defineClass方法调用,该方法在为正在定义的类构造ProtectionDomain时,将CodeSource作为参数。
- 参数
-
codesource
- 代码源。 - 结果
- the permissions granted to the codesource.
-
-