java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
- 直接已知的子类:
-
URLClassLoader
该类扩展了
ClassLoader
,额外支持为具有关联代码源和默认情况下由系统策略检索的权限定义类。
- 自JDK版本:
- 1.2
-
Constructor Summary
ModifierConstructorDescriptionprotected
使用默认的父类加载器创建一个新的SecureClassLoader
。protected
SecureClassLoader
(ClassLoader parent) 使用指定的父类加载器创建一个新的SecureClassLoader
。protected
SecureClassLoader
(String name, ClassLoader parent) 使用指定名称和指定父类加载器创建一个新的SecureClassLoader
。 -
Method Summary
Modifier and TypeMethodDescriptionprotected final Class
<?> defineClass
(String name, byte[] b, int off, int len, CodeSource cs) 将字节数组转换为Class
类的实例,可选地包含CodeSource。protected final Class
<?> defineClass
(String name, ByteBuffer b, CodeSource cs) 将ByteBuffer
转换为Class
类的实例,可选地包含CodeSource。protected PermissionCollection
getPermissions
(CodeSource codesource) 返回给定CodeSource对象的权限。Methods declared in 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
-
Constructor Details
-
SecureClassLoader
使用指定的父类加载器创建一个新的SecureClassLoader
。如果存在安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader
方法,以确保允许创建类加载器。- 参数:
-
parent
- 父类加载器 - 抛出:
-
SecurityException
- 如果存在安全管理器且其checkCreateClassLoader
方法不允许创建类加载器。 - 参见:
-
SecureClassLoader
protected SecureClassLoader()使用默认的父类加载器创建一个新的SecureClassLoader
。如果存在安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader
方法,以确保允许创建类加载器。- 抛出:
-
SecurityException
- 如果存在安全管理器且其checkCreateClassLoader
方法不允许创建类加载器。 - 参见:
-
SecureClassLoader
使用指定名称和指定父类加载器创建一个新的SecureClassLoader
。- 参数:
-
name
- 类加载器名称;如果未命名,则为null
-
parent
- 父类加载器 - 抛出:
-
IllegalArgumentException
- 如果给定名称为空。 -
SecurityException
- 如果存在安全管理器且其SecurityManager.checkCreateClassLoader()
方法不允许创建类加载器。 - 自JDK版本:
- 9
-
-
Method Details
-
defineClass
将字节数组转换为Class
类的实例,可选地包含CodeSource。在使用类之前,必须解析该类。如果提供了非空的CodeSource,则会构造一个ProtectionDomain并与正在定义的类关联。
- 参数:
-
name
- 类的预期名称;如果未知,则为null
,使用'.'而不是'/'作为分隔符,且不带有结尾的".class"后缀。 -
b
- 构成类数据的字节。位置在off
到off+len-1
的字节应符合由Java虚拟机规范定义的有效类文件格式。 -
off
- 类数据在b
中的起始偏移量 -
len
- 类数据的长度 -
cs
- 关联的CodeSource;如果没有,则为null
- 返回:
-
从数据创建的
Class
对象,以及可选的CodeSource。 - 抛出:
-
ClassFormatError
- 如果数据不包含有效类 -
IndexOutOfBoundsException
- 如果off
或len
为负,或者如果off+len
大于b.length
。 -
SecurityException
- 如果尝试将此类添加到包含由不同证书集签名的类的软件包中,或者如果类名以"java."开头。
-
defineClass
将ByteBuffer
转换为Class
类的实例,可选地包含CodeSource。在使用类之前,必须解析该类。如果提供了非空的CodeSource,则会构造一个ProtectionDomain并与正在定义的类关联。
- 参数:
-
name
- 类的预期名称;如果未知,则为null
,使用'.'而不是'/'作为分隔符,且不带有结尾的".class"后缀。 -
b
- 构成类数据的字节。从b.position()
到b.position() + b.limit() -1
的字节应符合由Java虚拟机规范定义的有效类文件格式。 -
cs
- 关联的CodeSource;如果没有,则为null
- 返回:
-
从数据创建的
Class
对象,以及可选的CodeSource。 - 抛出:
-
ClassFormatError
- 如果数据不包含有效类 -
SecurityException
- 如果尝试将此类添加到包含由不同证书集签名的类的软件包中,或者如果类名以"java."开头。 - 自JDK版本:
- 1.5
-
getPermissions
返回给定CodeSource对象的权限。当defineClass方法调用此方法时,该方法将以CodeSource作为参数,用于构造正在定义的类的ProtectionDomain。
- 参数:
-
codesource
- 代码源。 - 返回:
- 授予代码源的权限。
-