モジュール java.base
パッケージ 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からoff+len-1までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        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までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        cs - 関連したCodeSource。存在しない場合はnull
        戻り値:
        データから作成されたClassオブジェクトと、オプションのCodeSource。
        例外:
        ClassFormatError - データが有効なクラスを含まなかった場合
        SecurityException - このクラスではなく、別の証明書のセットを使って署名されたクラスを含むパッケージにこのクラスを追加しようとする場合、またはクラス名が「java」で始まる場合。
        導入されたバージョン:
        1.5
      • getPermissions

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

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

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