Module  java.base
软件包  java.security

Class SecureClassLoader

  • 已知直接子类:
    URLClassLoader


    public class SecureClassLoader
    extends ClassLoader
    此类扩展了ClassLoader,其额外支持用于定义具有相关代码源和权限的类,默认情况下系统策略将检索该类。
    从以下版本开始:
    1.2
    • 构造方法详细信息

      • 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 - 构成类数据的字节。 位置offoff+len-1的字节应具有由The Java™ Virtual Machine Specification定义的有效类文件的格式。
        off - 类数据中的起始偏移量为 b
        len - 类数据的长度
        cs - 相关的CodeSource,如果没有, null
        结果
        从数据创建的 Class对象,以及可选的CodeSource。
        异常
        ClassFormatError - 如果数据不包含有效的类
        IndexOutOfBoundsException - 如果 offlen为负数,或者如果 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.