モジュール java.base
パッケージ java.security

クラスSecureClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
直系の既知のサブクラス:
URLClassLoader

public class SecureClassLoader extends ClassLoader
このクラスは、デフォルトでシステム・ポリシーによって抽出される関連したコード・ソースとアクセス権を持つクラスを定義するための追加サポートを使用して、ClassLoaderを拡張します。
導入されたバージョン:
1.2
  • コンストラクタの詳細

    • 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 Class<?> defineClass(String name, byte[] b, int off, int len, CodeSource cs)
      バイトの配列を、オプションのCodeSourceを使用してClassクラスのインスタンスに変換します。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

      nullではないCodeSourceが提供される場合、ProtectionDomainは定義済みのクラスで構築され関連付けられます。

      パラメータ:
      name - クラスの名前として期待するもの。不明な場合はnull。区切り文字には「/」ではなく「.」を使う。クラス名のあとの接尾辞「.class」は付けない。
      b - クラス・データを構成するbyte。 off+len-1を介したoffの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      off - クラス・データのb内での開始オフセット
      len - クラス・データの長さ
      cs - 関連したCodeSource。存在しない場合はnull
      戻り値:
      データから作成されたClassオブジェクトと、オプションのCodeSource。
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合
      IndexOutOfBoundsException - offまたはlenが負の値の場合、あるいはoff+lenb.lengthより大きい場合。
      SecurityException - このクラスではなく、別の証明書のセットを使って署名されたクラスを含むパッケージにこのクラスを追加しようとする場合、またはクラス名が「java」で始まる場合。
    • defineClass

      protected final Class<?> defineClass(String name, ByteBuffer b, CodeSource cs)
      オプションのCodeSourceを使って、ByteBufferをクラスClassのインスタンスに変換します。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

      nullではないCodeSourceが提供される場合、ProtectionDomainは定義済みのクラスで構築され関連付けられます。

      パラメータ:
      name - クラスの名前として期待するもの。不明な場合はnull。区切り文字には「/」ではなく「.」を使う。クラス名のあとの接尾辞「.class」は付けない。
      b - クラス・データを構成するbyte。 b.position()からb.position() + b.limit() -1までの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      cs - 関連したCodeSource。存在しない場合はnull
      戻り値:
      データから作成されたClassオブジェクトと、オプションのCodeSource。
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合
      SecurityException - このクラスではなく、別の証明書のセットを使って署名されたクラスを含むパッケージにこのクラスを追加しようとする場合、またはクラス名が「java」で始まる場合。
      導入されたバージョン:
      1.5
    • getPermissions

      protected PermissionCollection getPermissions(CodeSource codesource)
      指定されたCodeSourceオブジェクトのアクセス権を返します。

      このメソッドは、定義されたクラスのProtectionDomainを構築しているときに、CodeSourceを引数として取るdefineClassメソッドによって呼び出されます。

      パラメータ:
      codesource - コード・ソース。
      戻り値:
      コード・ソースに与えられたアクセス権。