Class SecureClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
Direct Known Subclasses:
URLClassLoader

public classSecureClassLoaderextendsClassLoader
This class extendsClassLoader with additional support for defining classes with an associated code source and permissions.
API Note:
Permissions cannot be used for controlling access to resources as the Security Manager is no longer supported.
Since:
1.2
  • Constructor Details

    • SecureClassLoader

      protected SecureClassLoader(ClassLoader parent)
      Creates a newSecureClassLoader using the specified parent class loader for delegation.
      Parameters:
      parent - the parent ClassLoader
    • SecureClassLoader

      protected SecureClassLoader()
      Creates a newSecureClassLoader using the default parent class loader for delegation.
    • SecureClassLoader

      protected SecureClassLoader(String name,ClassLoader parent)
      Creates a newSecureClassLoader of the specified name and using the specified parent class loader for delegation.
      Parameters:
      name - class loader name; ornull if not named
      parent - the parent class loader
      Throws:
      IllegalArgumentException - if the given name is empty.
      Since:
      9
  • Method Details

    • defineClass

      protected final Class<?> defineClass(String name, byte[] b, int off, int len,CodeSource cs)
      Converts an array of bytes into an instance of classClass, with an optional CodeSource. Before the class can be used it must be resolved.

      If a non-null CodeSource is supplied a ProtectionDomain is constructed and associated with the class being defined.

      Parameters:
      name - the expected name of the class, ornull if not known, using '.' and not '/' as the separator and without a trailing ".class" suffix.
      b - the bytes that make up the class data. The bytes in positionsoff throughoff+len-1 should have the format of a valid class file as defined byThe Java Virtual Machine Specification.
      off - the start offset inb of the class data
      len - the length of the class data
      cs - the associated CodeSource, ornull if none
      Returns:
      theClass object created from the data, and optional CodeSource.
      Throws:
      ClassFormatError - if the data did not contain a valid class
      IndexOutOfBoundsException - if eitheroff orlen is negative, or ifoff+len is greater thanb.length.
      SecurityException - if an attempt is made to add this class to a package that contains classes that were signed by a different set of certificates than this class, or if the class name begins with "java.".
    • defineClass

      protected final Class<?> defineClass(String name,ByteBuffer b,CodeSource cs)
      Converts aByteBuffer into an instance of classClass, with an optional CodeSource. Before the class can be used it must be resolved.

      If a non-null CodeSource is supplied a ProtectionDomain is constructed and associated with the class being defined.

      Parameters:
      name - the expected name of the class, ornull if not known, using '.' and not '/' as the separator and without a trailing ".class" suffix.
      b - the bytes that make up the class data. The bytes from positionsb.position() throughb.position() + b.limit() -1 should have the format of a valid class file as defined byThe Java Virtual Machine Specification.
      cs - the associated CodeSource, ornull if none
      Returns:
      theClass object created from the data, and optional CodeSource.
      Throws:
      ClassFormatError - if the data did not contain a valid class
      SecurityException - if an attempt is made to add this class to a package that contains classes that were signed by a different set of certificates than this class, or if the class name begins with "java.".
      Since:
      1.5
    • getPermissions

      protected PermissionCollection getPermissions(CodeSource codesource)
      Returns the permissions for the given CodeSource object.

      This method is invoked by the defineClass method which takes a CodeSource as an argument when it is constructing the ProtectionDomain for the class being defined.

      Parameters:
      codesource - the codesource.
      Returns:
      the permissions for the codesource.