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

クラスClassLoader

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

public abstract class ClassLoader extends Object
クラス・ローダーは、クラスのロードを担当するオブジェクトです。 クラスClassLoaderは抽象クラスです。 クラスのバイナリ名を指定すると、クラス・ローダーはクラスの定義を構成するデータを見つけるか生成します。 一般的な方法としては、名前をファイル名に変換して、ファイル・システムからその名前の「クラス・ファイル」を読み込みます。

すべてのClassオブジェクトには、そのオブジェクトを定義したClassLoaderへのreferenceが含まれます。

配列クラスのClassオブジェクトは、クラス・ローダーでは作成されませんが、Javaランタイムで必要とされるとおりに自動的に作成されます。 配列クラスのクラス・ローダー(Class.getClassLoader()から返される)は、その要素の型のクラス・ローダーと同じになります。要素の型がプリミティブ型の場合、配列クラスはクラス・ローダーを持ちません。

アプリケーションは、Java仮想マシンがクラスを動的にロードする方法を拡張するために、ClassLoaderのサブクラスを実装します。

クラス・ローダーは一般的に、セキュリティ・マネージャがセキュリティ・ドメインを示すために使われます。

クラスをロードすることに加えて、クラス・ローダーはリソースの特定も担当します。 リソースは、抽象的な'/'-separatedパス名で識別されるデータ(".class"ファイル、構成データ、またはイメージなど)です。 リソースは通常、アプリケーションまたはライブラリにパッケージ化されているため、アプリケーションまたはライブラリ内のコードでリソースを見つけることができます。 場合によっては、リソースが他のライブラリに配置されるように含まれています。

ClassLoaderクラスは、委任モデルを使用してクラスおよびリソースを検索します。 ClassLoaderの各インスタンスには、関連付けられた親クラス・ローダーがあります。 ClassLoaderインスタンスは、クラスまたはリソースの検索をリクエストされると、そのクラスまたはリソース自体の検索を試みる前に、そのクラスまたはリソースの検索を親クラス・ローダーに委譲します。

クラスの同時ロードをサポートするクラス・ローダーは、並列対応クラス・ローダーと呼ばれ、ClassLoader.registerAsParallelCapableメソッドを呼び出してクラス初期化時に自身を登録する必要があります。 ClassLoaderクラスは、デフォルトでパラレル対応として登録されています。 ただしそのサブクラスについては、並行可能な場合には自身を登録する必要があります。 委任モデルが厳密に階層化されていない環境では、クラス・ローダーはパラレルに対応している必要があります。そうしないと、クラス・ロード・プロセス(loadClassメソッドを参照してください)の間、ローダー・ロックが保持されるため、クラス・ロードによってデッドロックが発生する可能性があります。

ランタイム組み込みクラス・ローダー

Javaランタイムには、次の組み込みクラス・ローダーがあります:
  • ブートストラップ・クラス・ローダー。 これは、仮想マシンの組込みクラス・ローダーで、通常はnullとして表され、親を持ちません。

  • 「プラットフォーム・クラス・ローダー」 プラットフォーム・クラス・ローダーは、「プラットフォーム・クラス」のロードを担当します。 プラットフォーム・クラスには、Java SEプラットフォームAPI、その実装クラス、およびプラットフォーム・クラス・ローダーまたはその祖先によって定義されたJDK固有のランタイム・クラスが含まれます。 プラットフォーム・クラス・ローダーは、ClassLoaderインスタンスの親として使用できます。

    プラットフォーム・クラス・ローダーに定義されたモジュールのアップグレード/オーバーライドを可能にするために、アップグレードされたモジュールが定義されたモジュールをプラットフォーム・クラス・ローダーとその祖先以外のクラス・ローダーに読み込む場合、プラットフォーム・クラス・ローダーは他のクラス・ローダーに委譲する必要があります。アプリケーション・クラス・ローダーなどがあります。 言い換えれば、プラットフォーム・クラス・ローダーとその祖先以外のクラス・ローダーに定義された名前付きモジュールのクラスは、プラットフォーム・クラス・ローダーに可視である可能性があります。

  • 「システム・クラス・ローダー」 「アプリケーション・クラス・ローダー」とも呼ばれ、プラットフォーム・クラス・ローダーとは異なります。 システム・クラス・ローダーは、通常、アプリケーション・クラス・パス、モジュール・パスおよびJDK固有のツールでクラスを定義するために使用されます。 プラットフォーム・クラス・ローダーはシステム・クラス・ローダーの親または祖先であるため、システム・クラス・ローダーはその親に委任することでプラットフォーム・クラスをロードできます。

通常、Java仮想マシンは、プラットフォームに依存しない方法でローカル・ファイル・システムからクラスをロードします。 ただし、ファイルから作成できないクラスもあります。このようなクラスは、ネットワークなどのほかのソースから作成したり、アプリケーションが構築したりします。 メソッドdefineClassは、バイトの配列をクラスClassのインスタンスに変換します。 この新たに定義されたクラスのインスタンスは、Class.newInstanceを使用して作成できます。

クラス・ローダーで作成したオブジェクトのメソッドとコンストラクタは、ほかのクラスを参照できます。 参照されるclass(es)を決定するために、Java仮想マシンは、最初にクラスを作成したクラス・ローダーのloadClassメソッドを呼び出します。

たとえば、アプリケーションはネットワーク・クラス・ローダーを作成して、サーバーからクラス・ファイルをダウンロードできます。 コードは次のようになります。

   ClassLoader loader = new NetworkClassLoader(host, port);
   Object main = loader.loadClass("Main", true).newInstance();
        . . .
 

ネットワーク・クラス・ローダー・サブクラスは、ネットワークからクラスをロードするために、メソッドfindClassおよびloadClassDataを定義する必要があります。 クラスを構成するバイトをダウンロードしたら、メソッドdefineClassを使用してクラス・インスタンスを作成する必要があります。 実装の例を次に示します。

     class NetworkClassLoader extends ClassLoader {
         String host;
         int port;

         public Class findClass(String name) {
             byte[] b = loadClassData(name);
             return defineClass(name, b, 0, b.length);
         }

         private byte[] loadClassData(String name) {
             // load the class data from the connection
              . . .
         }
     }
 

バイナリ名

ClassLoaderのメソッドにStringパラメータとして提供されるクラス名は、「Java言語仕様」で定義されているバイナリ名である必要があります。

次に、有効なクラス名の例を示します。

   "java.lang.String"
   "javax.swing.JSpinner$DefaultEditor"
   "java.security.KeyStore$Builder$FileBuilder$1"
   "java.net.URLClassLoader$3$1"
 

ClassLoaderのメソッドへのStringパラメータとして指定されたパッケージ名は、空の文字列(名前のないパッケージを示す)または「Java言語仕様」で定義された完全修飾名でなければなりません。

Java言語仕様を参照してください:
6.7 完全修飾名
13.1バイナリの形式
導入されたバージョン:
1.0
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    メソッドgetSystemClassLoader()によって親クラス・ローダーとして返されたClassLoaderを使用して、新しいクラス・ローダーを作成します。
    protected
    指定された親クラス・ローダーを使って、委譲のために新しいクラス・ローダーを作成します。
    protected
    指定された名前の新しいクラス・ローダーを作成し、指定された親クラス・ローダーを使用して委任します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    このクラス・ローダーのデフォルトのアサーション・ステータスをfalseに設定し、クラス・ローダーに関連付けられたパッケージ・デフォルトまたはクラス・アサーション・ステータス設定を破棄します。
    protected final Class<?>
    defineClass(byte[] b, int off, int len)
    非推奨。
    defineClass(String, byte[], int, int)に置き換えられました
    protected final Class<?>
    defineClass(String name, byte[] b, int off, int len)
    バイトの配列をクラスClassのインスタンスに変換します。
    protected final Class<?>
    defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)
    指定されたProtectionDomainを使用して、バイトの配列をクラスClassのインスタンスに変換します。
    protected final Class<?>
    defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
    指定されたProtectionDomainを使用して、ByteBufferをクラスClassのインスタンスに変換します。
    protected Package
    definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
    このClassLoadernameでパッケージを定義します。
    protected Class<?>
    指定されたバイナリ名を持つクラスを探します。
    protected Class<?>
    findClass(String moduleName, String name)
    このクラス・ローダーに定義されているモジュール内で、指定された「バイナリ名」を持つクラスを検索します。
    protected String
    ネイティブ・ライブラリの絶対パス名を返します。
    protected final Class<?>
    このローダーがこのバイナリ名を持つクラスの起動ローダーとしてJava仮想マシンにより記録されていた場合は、指定されたバイナリ名を持つクラスを返します。
    protected URL
    指定された名前を持つリソースを検索します。
    protected URL
    findResource(String moduleName, String name)
    このクラス・ローダーに定義されているモジュール内のリソースへのURLを返します。
    protected Enumeration<URL>
    指定された名前を持つすべてのリソースを表すURLオブジェクトの列挙を返します。
    protected final Class<?>
    指定されたバイナリ名を持つクラスを探して、必要に応じてロードします。
    protected Object
    クラス・ロード操作用のロック・オブジェクトを返します。
    final Package
    このクラス・ローダーによって定義された、指定されたnamePackageを返します。
    final Package[]
    このクラス・ローダーによって定義されたすべてのPackageを返します。
    このクラス・ローダーの名前を返すか、このクラス・ローダーの名前が指定されていない場合はnullを返します。
    protected Package
    非推奨。
    複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackageのルックアップ動作に依存して親ローダーからPackageを返す場合、Packageによって公開されるプロパティは期待どおりにならない場合があります残りのプログラム。
    protected Package[]
    このクラス・ローダーとその祖先によって定義されたすべてのPackageを返します。
    委譲のための親クラス・ローダーを返します。
    プラットフォーム・クラス・ローダーを返します。
    指定された名前を持つリソースを検索します。
    指定されたリソースを読み込む入力ストリームを返します。
    指定された名前を持つすべてのリソースを検索します。
    システム・クラス・ローダーを返します。
    static URL
    クラスをロードするために使用される検索パスから、指定された名前のリソースを探します。
    クラスをロードするのに使用される検索パスから、指定された名前のリソースを、読込み用にオープンします。
    クラスをロードするために使用される検索パスから、指定された名前のすべてのリソースを探します。
    final Module
    このクラス・ローダーの名前のないModuleを返します。
    final boolean
    このクラス・ローダーが「並列対応」、それ以外の場合はfalseとして登録されている場合はtrueを返します。
    指定されたバイナリ名を持つクラスをロードします。
    protected Class<?>
    loadClass(String name, boolean resolve)
    指定されたバイナリ名を持つクラスをロードします。
    protected static boolean
    呼び出し元を「並列対応」として登録します。
    protected final void
    指定されたクラスをリンクします。
    指定された名前を持つすべてのリソースのURLである要素を持つストリームを返します。
    void
    setClassAssertionStatus(String className, boolean enabled)
    このクラス・ローダーの指定されたトップレベル・クラスおよびそこに含まれるネストされたクラス内に対して、目的のアサーション・ステータスを設定します。
    void
    setDefaultAssertionStatus(boolean enabled)
    このクラス・ローダーのデフォルトのアサーション・ステータスを設定します。
    void
    setPackageAssertionStatus(String packageName, boolean enabled)
    指定されたパッケージ・デフォルトのアサーション・ステータスを設定します。
    protected final void
    setSigners(Class<?> c, Object[] signers)
    クラスの署名者を設定します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • ClassLoader

      protected ClassLoader(String name, ClassLoader parent)
      指定された名前の新しいクラス・ローダーを作成し、指定された親クラス・ローダーを使用して委任します。
      APIのノート:
      親がnull (ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。
      パラメータ:
      name - クラス・ローダー名; 名前が付けられていない場合はnull
      parent - 親クラス・ローダー
      例外:
      IllegalArgumentException - 指定された名前が空の場合。
      SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkCreateClassLoader()メソッドが新しいクラス・ローダーの作成を許可しない場合。
      導入されたバージョン:
      9
    • ClassLoader

      protected ClassLoader(ClassLoader parent)
      指定された親クラス・ローダーを使って、委譲のために新しいクラス・ローダーを作成します。

      セキュリティ・マネージャが存在する場合は、そのcheckCreateClassLoaderメソッドが呼び出されます。 これはセキュリティ例外となる場合があります。

      APIのノート:
      親がnull (ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。
      パラメータ:
      parent - 親クラス・ローダー
      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドで新しいクラス・ローダーを作成できない場合。
      導入されたバージョン:
      1.2
    • ClassLoader

      protected ClassLoader()
      メソッドgetSystemClassLoader()によって親クラス・ローダーとして返されたClassLoaderを使用して、新しいクラス・ローダーを作成します。

      セキュリティ・マネージャが存在する場合は、そのcheckCreateClassLoaderメソッドが呼び出されます。 これはセキュリティ例外となる場合があります。

      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドで新しいクラス・ローダーを作成できない場合。
  • メソッドの詳細

    • getName

      public String getName()
      このクラス・ローダーの名前を返すか、このクラス・ローダーの名前が指定されていない場合はnullを返します。
      APIのノート:
      このメソッドは、互換性のために最終ではありません。 このメソッドがオーバーライドされる場合、このメソッドは、このクラス・ローダーがインスタンス化されたときに指定された名前と同じ名前を返す必要があります。
      戻り値:
      このクラス・ローダーの名前。このクラス・ローダーの名前がない場合はnull
      導入されたバージョン:
      9
    • loadClass

      public Class<?> loadClass(String name) throws ClassNotFoundException
      指定されたバイナリ名を持つクラスをロードします。 このメソッドでのクラスの検索方法は、loadClass(String, boolean)メソッドの場合と同じです。 Java仮想マシンがこのメソッドを呼び出して、クラス参照を解決します。 このメソッドを呼び出すことは、loadClass(name, false)を呼び出すことと同じです。
      パラメータ:
      name - クラスのバイナリ名
      戻り値:
      結果のClassオブジェクト
      例外:
      ClassNotFoundException - クラスが見つからなかった場合
    • loadClass

      protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
      指定されたバイナリ名を持つクラスをロードします。 このメソッドのデフォルト実装では、次の順序でクラスを検索します。
      1. クラスがすでにロードされていないかチェックするためにfindLoadedClass(String)を呼び出す。

      2. 親クラス・ローダーでloadClassメソッドを呼び出します。 親がnullの場合、代わりに仮想マシンに組み込まれたクラス・ローダーが使用されます。

      3. findClass(String)メソッドを呼び出してクラスを探す。

      前述のステップでクラスが見つかり、resolveフラグがtrueの場合、このメソッドは結果のClassオブジェクトに対してresolveClass(Class)メソッドを呼び出します。

      ClassLoaderのサブクラスは、このメソッドではなくfindClass(String)をオーバーライドすることをお薦めします。

      オーバーライドされないかぎり、このメソッドは、クラス・ロード・プロセス全体でgetClassLoadingLockメソッドの結果に対して同期化されます。

      パラメータ:
      name - クラスのバイナリ名
      resolve - trueの場合、クラスを解決
      戻り値:
      結果のClassオブジェクト
      例外:
      ClassNotFoundException - クラスが見つからなかった場合
    • getClassLoadingLock

      protected Object getClassLoadingLock(String className)
      クラス・ロード操作用のロック・オブジェクトを返します。
      APIのノート:
      このメソッドにより、パラレル対応クラス・ローダーは、複数のスレッドがデッドロックなしでクラスを同時にロードできるように、よりきめ細かいロック・スキームを実装できます。 非パラレル対応のクラス・ローダーの場合、ClassLoaderオブジェクトは、クラスのロード操作中に同期されます。 非階層委任を持つクラス・ローダーは、デッドロックを防ぐために「パラレル対応として登録」である必要があります。
      実装要件:
      このClassLoaderオブジェクトがパラレル対応として登録されている場合、このメソッドは、指定されたクラス名に関連付けられた専用オブジェクトを返します。 それ以外の場合、このメソッドは、このClassLoaderオブジェクトを返します。
      パラメータ:
      className - ロードするクラスの名前
      戻り値:
      クラス・ロード処理用のロック
      例外:
      NullPointerException - パラレル対応として登録され、classNamenullの場合
      導入されたバージョン:
      1.7
      関連項目:
    • findClass

      protected Class<?> findClass(String name) throws ClassNotFoundException
      指定されたバイナリ名を持つクラスを探します。 このメソッドは、クラスをロードするために委任モデルに従うクラス・ローダー実装によってオーバーライドされ、リクエストされたクラスの親クラス・ローダーをチェックした後、loadClassメソッドによって呼び出されます。
      実装要件:
      デフォルトの実装では、ClassNotFoundExceptionがスローされます。
      パラメータ:
      name - クラスのバイナリ名
      戻り値:
      結果のClassオブジェクト
      例外:
      ClassNotFoundException - クラスが見つからなかった場合
      導入されたバージョン:
      1.2
    • findClass

      protected Class<?> findClass(String moduleName, String name)
      このクラス・ローダーに定義されているモジュール内で、指定された「バイナリ名」を持つクラスを検索します。 モジュールからのロードをサポートするクラス・ローダー実装は、このメソッドをオーバーライドする必要があります。
      APIのノート:
      このメソッドは、クラスが見つからなかった場合にClassNotFoundExceptionをスローするのではなく、nullを返します。
      実装要件:
      moduleNamenullのとき、findClass(String)を呼び出すことによって、デフォルトの実装がクラスを見つけようとします。 そうでなければ、nullを返します。
      パラメータ:
      moduleName - モジュール名。またはnullを使用して、このクラス・ローダーの「名前のないモジュール」内のクラスを見つけます
      name - クラスのバイナリ名
      戻り値:
      結果のClassオブジェクト、またはクラスが見つからない場合はnull
      導入されたバージョン:
      9
    • defineClass

      @Deprecated(since="1.1") protected final Class<?> defineClass(byte[] b, int off, int len) throws ClassFormatError
      非推奨。
      defineClass(String, byte[], int, int)に置き換えられました
      バイトの配列をクラスClassのインスタンスに変換します。 Classを使用する前に解決する必要があります。 このメソッドは非推奨です。バイナリ名を最初の引数として取るバージョンの方が安全であるため、そのバージョンを使用するようにしてください。
      パラメータ:
      b - クラス・データを構成するバイト。 off+len-1を介したoffの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      off - クラス・データのbの開始オフセット
      len - クラス・データの長さ
      戻り値:
      指定したクラス・データから作成されたClassオブジェクト
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合
      IndexOutOfBoundsException - offまたはlenのいずれかが負の場合、またはoff+lenb.lengthより大きい場合。
      SecurityException - このクラスとは異なる一連の証明書で署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、または「java.」で始まる完全指定名を持つパッケージ内でクラスを定義しようとした場合。
      関連項目:
    • defineClass

      protected final Class<?> defineClass(String name, byte[] b, int off, int len) throws ClassFormatError
      バイトの配列をクラスClassのインスタンスに変換します。 Classを使用する前に解決する必要があります。

      このメソッドは、新しく定義されたクラスにデフォルトのProtectionDomainを割り当てます。 ProtectionDomainには、Policy.getPolicy().getPermissions(new CodeSource(null, null))の起動時に返される同じ権限のセットが事実上付与されます。 デフォルトの保護ドメインは、defineClassの最初の呼出しで作成され、後続の呼出しで再利用されます。

      クラスに特定のProtectionDomainを割り当てるには、引数の1つとしてProtectionDomainを取るdefineClassメソッドを使用します。

      このメソッドは、Class (そのようなパッケージがこのクラス・ローダーでまだ定義されていない場合)のパッケージに対応するこのクラス・ローダー内のパッケージを定義します。 定義されたパッケージの名前は、バイト配列bで指定されたクラスの「バイナリ名」から派生します。 定義されたパッケージのその他のプロパティは、Packageで指定されたものです。

      パラメータ:
      name - クラスの予想される「バイナリ名」、または不明な場合はnull
      b - クラス・データを構成するバイト。 off+len-1を介したoffの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      off - クラス・データのbの開始オフセット
      len - クラス・データの長さ
      戻り値:
      指定したクラス・データから作成されたClassオブジェクト。
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合
      IndexOutOfBoundsException - offまたはlenのいずれかが負の場合、またはoff+lenb.lengthより大きい場合。
      SecurityException - このクラス(符号なし)とは異なる証明書セットによって署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、またはnameが"java."で始まる場合。
      導入されたバージョン:
      1.1
      関連項目:
    • defineClass

      protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) throws ClassFormatError
      指定されたProtectionDomainを使用して、バイトの配列をクラスClassのインスタンスに変換します。

      指定されたProtectionDomainnullの場合、defineClass(String, byte[], int, int)のドキュメントで指定されているように、デフォルトの保護ドメインがクラスに割り当てられます。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

      パッケージで定義される最初のクラスにより、そのパッケージ内で続いて定義されたすべてのクラスに必要な、証明書の正確なセットが決まります。 クラスの証明書のセットは、クラスのProtectionDomain内のCodeSourceから取得されます。 そのパッケージに追加されるすべてのクラスに同じ証明書セットが含まれている必要があります。そうでない場合、SecurityExceptionがスローされます。 namenullの場合、このチェックは実行されないことに注意してください。 必ず、定義するクラスのバイナリ名をバイトとともに渡すようにしてください。 このようにして渡すと、定義するクラスは実際に考えたとおりのクラスになります。

      指定されたnameが"java."で始まる場合は、「プラットフォーム・クラス・ローダー」またはその祖先によってのみ定義できます。定義されていない場合は、SecurityExceptionがスローされます。 namenullでない場合は、バイト配列bで指定されたクラスの「バイナリ名」と等しい必要があります。そうでない場合は、NoClassDefFoundErrorがスローされます。

      このメソッドは、Class (そのようなパッケージがこのクラス・ローダーでまだ定義されていない場合)のパッケージに対応するこのクラス・ローダー内のパッケージを定義します。 定義されたパッケージの名前は、バイト配列bで指定されたクラスの「バイナリ名」から派生します。 定義されたパッケージのその他のプロパティは、Packageで指定されたものです。

      パラメータ:
      name - クラスの予想される「バイナリ名」、または不明な場合はnull
      b - クラス・データを構成するバイト。 off+len-1を介したoffの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      off - クラス・データのbの開始オフセット
      len - クラス・データの長さ
      protectionDomain - クラスのProtectionDomain
      戻り値:
      データから作成されたClassオブジェクト、およびProtectionDomain
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合
      NoClassDefFoundError - namenullでなく、bで指定されたクラスの「バイナリ名」と等しくない場合
      IndexOutOfBoundsException - offまたはlenのいずれかが負の場合、またはoff+lenb.lengthより大きい場合。
      SecurityException - このクラスとは異なる証明書セットによって署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、またはnameが"java."で始まり、このクラス・ローダーがプラットフォーム・クラス・ローダーまたはその祖先ではない場合。
    • defineClass

      protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) throws ClassFormatError
      指定されたProtectionDomainを使用して、ByteBufferをクラスClassのインスタンスに変換します。 指定されたProtectionDomainnullの場合、defineClass(String, byte[], int, int)のドキュメントで指定されているように、デフォルトの保護ドメインがクラスに割り当てられます。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

      パッケージの証明書のセット、クラス名の制限、およびクラスの定義済みパッケージを決定する、パッケージで定義されている最初のクラスに関する規則は、defineClass(String, byte[], int, int, ProtectionDomain)のドキュメントで指定されているものと同じです。

      cl.defineClass(name, bBuffer, pd)という形式のこのメソッドを呼び出すと、文とまったく同じ結果になります

      ...
      byte[] temp = new byte[bBuffer.remaining()];
      bBuffer.get(temp);
      cl.defineClass(name, temp, 0, temp.length, pd)を返します

      パラメータ:
      name - クラスの予想される「バイナリ名」。不明な場合はnull
      b - クラス・データを構成するバイト。 b.position()からb.position() + b.limit() -1 までの位置のバイトは、「Java Virtual Machine仕様」で定義されている有効なクラス・ファイルの形式である必要があります。
      protectionDomain - クラスのProtectionDomain、またはnull
      戻り値:
      データから作成されたClassオブジェクト、およびProtectionDomain
      例外:
      ClassFormatError - データが有効なクラスを含まなかった場合。
      NoClassDefFoundError - namenullでなく、bで指定されたクラスの「バイナリ名」と等しくない場合
      SecurityException - このクラスと異なる証明書セットで署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、またはnameが"java."で始まる場合。
      導入されたバージョン:
      1.5
      関連項目:
    • resolveClass

      protected final void resolveClass(Class<?> c)
      指定されたクラスをリンクします。 クラス・ローダーはこのメソッドを使って、クラスをリンクします。 クラスcがすでにリンクされている場合、このメソッドは単に返します。 それ以外の場合、クラスは「Java言語仕様」の"実行"の章で説明されているようにリンクされます。
      パラメータ:
      c - リンクするクラス
      例外:
      NullPointerException - cnullの場合。
      関連項目:
    • findSystemClass

      protected final Class<?> findSystemClass(String name) throws ClassNotFoundException
      指定されたバイナリ名を持つクラスを探して、必要に応じてロードします。

      このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってそのクラスをロードします。 返されるClassオブジェクトには、複数のClassLoaderが関連付けられている場合があります。 ほとんどのクラス・ローダーはfindClass(String)のみをオーバーライドする必要があるため、通常、ClassLoaderのサブクラスはこのメソッドを呼び出す必要はありません。

      パラメータ:
      name - クラスのバイナリ名
      戻り値:
      指定したnameClassオブジェクト
      例外:
      ClassNotFoundException - クラスが見つからなかった場合
      関連項目:
    • findLoadedClass

      protected final Class<?> findLoadedClass(String name)
      このローダーがこのバイナリ名を持つクラスの起動ローダーとしてJava仮想マシンにより記録されていた場合は、指定されたバイナリ名を持つクラスを返します。 それ以外の場合はnullを返します。
      パラメータ:
      name - クラスのバイナリ名
      戻り値:
      Classオブジェクト、またはクラスがロードされていない場合はnull
      導入されたバージョン:
      1.1
    • setSigners

      protected final void setSigners(Class<?> c, Object[] signers)
      クラスの署名者を設定します。 このメソッドは、クラスの定義後に呼び出す必要があります。
      パラメータ:
      c - Classオブジェクト
      signers - クラスの署名者
      導入されたバージョン:
      1.1
    • findResource

      protected URL findResource(String moduleName, String name) throws IOException
      このクラス・ローダーに定義されているモジュール内のリソースへのURLを返します。 モジュールからのロードをサポートするクラス・ローダー実装は、このメソッドをオーバーライドする必要があります。
      APIのノート:
      このメソッドは、Class.getResourceClass.getResourceAsStreamおよびModule.getResourceAsStreamメソッドの基礎です。 Module.getResourceAsStreamで指定されたカプセル化の規則の対象ではありません。
      実装要件:
      moduleNamenullのとき、findResource(String)を呼び出すことによって、デフォルトの実装はリソースを見つけようとします。 そうでなければ、nullを返します。
      パラメータ:
      moduleName - モジュール名。またはnullを使用して、このクラス・ローダーの「名前のないモジュール」内のリソースを検索
      name - リソース名
      戻り値:
      リソースへのURL。リソースが見つからなかった場合はnull、リソースを特定するためのURLを構築できなかった、リソースへのアクセスがセキュリティ・マネージャによって拒否された、またはクラス・ローダーに定義された指定された名前のモジュールがない。
      例外:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      9
      関連項目:
    • getResource

      public URL getResource(String name)
      指定された名前を持つリソースを検索します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

      リソースの名前は、リソースを識別する/で区切られたパス名です。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージがopenedで無条件に(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)の場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      APIのノート:
      複数のモジュールが同じクラス・ローダーに定義されており、複数のモジュールに指定した名前のリソースが含まれている場合、そのモジュールが検索される順序は指定されず、非常に予測できない場合があります。 このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResources(String)メソッドと確実に一致するようになることをお薦めします。
      実装要件:
      デフォルトの実装では、最初にリソースの親クラス・ローダーを検索します。親がnullの場合、仮想マシンに組み込まれているクラス・ローダーのパスが検索されます。 見つからなければ、このメソッドはfindResource(String)を呼び出してリソースを探します。
      パラメータ:
      name - リソース名
      戻り値:
      リソースを読み取るためのURL オブジェクト。リソースが見つからなかった場合、null、リソースを見つけるためのURLを構築できなかった場合、リソースが無条件にオープンされていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合。
      例外:
      NullPointerException - namenullである場合
      導入されたバージョン:
      1.1
    • getResources

      public Enumeration<URL> getResources(String name) throws IOException
      指定された名前を持つすべてのリソースを検索します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

      リソースの名前は、リソースを識別する/区切りのパス名です。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージがopenedで無条件に(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)の場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      APIのノート:
      複数のモジュールが同じクラス・ローダーに定義されており、複数のモジュールに指定した名前のリソースが含まれている場合、順序付けは指定されず、非常に予測できない可能性があります。 このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResource(String)メソッドと確実に一致するようになることをお薦めします。 これにより、列挙のnextElementメソッドから返される最初の要素が必ず、getResource(String)メソッドが返すリソースと同じものになるはずです。
      実装要件:
      デフォルトの実装では、最初にリソースの親クラス・ローダーを検索します。親がnullの場合、仮想マシンに組み込まれているクラス・ローダーのパスが検索されます。 次に、findResources(String)を呼び出して、このクラス・ローダー内の名前のリソースを検索します。 親クラス・ローダーを検索した後にfindResourcesで見つかった要素が検索されたURLを要素とする列挙を返します。
      パラメータ:
      name - リソース名
      戻り値:
      リソースのURLオブジェクトの列挙。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソース、無条件にオープンされていないパッケージ内にあるリソース、またはセキュリティ・マネージャによってリソースへのアクセスが拒否されたリソースは、列挙に戻されません。
      例外:
      IOException - 入出力エラーが発生した場合
      NullPointerException - namenullである場合
      導入されたバージョン:
      1.2
    • resources

      public Stream<URL> resources(String name)
      指定された名前を持つすべてのリソースのURLである要素を持つストリームを返します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

      リソースの名前は、リソースを識別する/区切りのパス名です。

      リソースは、返されたストリームが評価されるときに検出されます。 評価の結果がIOExceptionの場合、I/O例外はUncheckedIOExceptionにラップされ、その後スローされます。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージがopenedで無条件に(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)の場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      APIのノート:
      このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResource(String)メソッドと確実に一致するようになることをお薦めします。 これにより、ストリームによって返される最初の要素が、getResource(String)メソッドが返すリソースと同じであることが保証されます。
      実装要件:
      デフォルトの実装では、getResourcesを呼び出して、指定された名前を持つすべてのリソースを検索し、列挙内の要素をソースとして持つストリームを返します。
      パラメータ:
      name - リソース名
      戻り値:
      リソースURLオブジェクトのストリーム。 リソースが見つからない場合、ストリームは空になります。 URLを構築できないリソース、無条件にオープンされていないパッケージ内にあるリソース、またはセキュリティ・マネージャによってリソースへのアクセスが拒否されたリソースは、ストリームに存在しません。
      例外:
      NullPointerException - namenullである場合
      導入されたバージョン:
      9
    • findResource

      protected URL findResource(String name)
      指定された名前を持つリソースを検索します。 クラス・ローダーの実装は、このメソッドをオーバーライドする必要があります。

      名前付きモジュールのリソースの場合、メソッドは、Module getResourceAsStreamメソッドで指定されたカプセル化のルールを実装する必要があります。 また、パッケージが無条件にopenedでないかぎり、名前付きモジュールのパッケージで".class"以外のリソースを検出することはできません。

      実装要件:
      デフォルトの実装ではnullを返します。
      パラメータ:
      name - リソース名
      戻り値:
      リソースを読み取るためのURL オブジェクト。リソースが見つからなかった場合、null、リソースを見つけるためのURLを構築できなかった場合、リソースが無条件にオープンされていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合。
      導入されたバージョン:
      1.2
    • findResources

      protected Enumeration<URL> findResources(String name) throws IOException
      指定された名前を持つすべてのリソースを表すURLオブジェクトの列挙を返します。 クラス・ローダーの実装は、このメソッドをオーバーライドする必要があります。

      名前付きモジュールのリソースの場合、メソッドは、Module getResourceAsStreamメソッドで指定されたカプセル化のルールを実装する必要があります。 また、パッケージが無条件にopenedでないかぎり、名前付きモジュールのパッケージで".class"以外のリソースを検出することはできません。

      実装要件:
      デフォルトの実装は、要素を含まない列挙型を返します。
      パラメータ:
      name - リソース名
      戻り値:
      リソースのURLオブジェクトの列挙。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソース、無条件にオープンされていないパッケージ内にあるリソース、またはセキュリティ・マネージャによってリソースへのアクセスが拒否されたリソースは、列挙に戻されません。
      例外:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.2
    • registerAsParallelCapable

      protected static boolean registerAsParallelCapable()
      呼び出し元を「並列対応」として登録します。 登録が成功するのは、次の条件をすべて満たす場合だけです。
      1. 呼出し元のインスタンスが1つも作成されていない
      2. 呼出し元のすべてのスーパー・クラス(Objectクラスは除く)が並行可能として登録されている

      いったんクラス・ローダーを並行可能として登録すると、それを元に戻す方法はありません。

      このメソッドが、コール元がClassLoaderのサブクラスでないコンテキストからコールされる場合、またはスタック(例、JNIアタッチ・スレッドから直接コールされる場合)にコール元フレームがない場合、IllegalCallerExceptionがスローされます。

      戻り値:
      呼出し側がパラレル対応として正常に登録された場合はtrue、それ以外の場合はfalse
      例外:
      IllegalCallerException - コール元がClassLoaderのサブクラスでない場合
      導入されたバージョン:
      1.7
      関連項目:
    • isRegisteredAsParallelCapable

      public final boolean isRegisteredAsParallelCapable()
      このクラス・ローダーが「並列対応」、それ以外の場合はfalseとして登録されている場合はtrueを返します。
      戻り値:
      このクラス・ローダーがパラレル対応の場合はtrue、それ以外の場合はfalse
      導入されたバージョン:
      9
      関連項目:
    • getSystemResource

      public static URL getSystemResource(String name)
      クラスをロードするために使用される検索パスから、指定された名前のリソースを探します。 このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってリソースを見つけます。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージが無条件にopenedの場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      パラメータ:
      name - リソース名
      戻り値:
      リソースに対するURL。リソースが見つからなかった場合、リソースを特定するためのURLを構築できなかった場合、リソースが無条件にオープンされていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合、 null
      導入されたバージョン:
      1.1
    • getSystemResources

      public static Enumeration<URL> getSystemResources(String name) throws IOException
      クラスをロードするために使用される検索パスから、指定された名前のすべてのリソースを探します。 したがって、見つかったリソースは、URLオブジェクトのEnumerationとして返されます。

      検索順については、getSystemResource(String)のドキュメントを参照してください。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージが無条件にopenedの場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      パラメータ:
      name - リソース名
      戻り値:
      リソースのURLオブジェクトの列挙。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソース、無条件にオープンされていないパッケージ内にあるリソース、またはセキュリティ・マネージャによってリソースへのアクセスが拒否されたリソースは、列挙に戻されません。
      例外:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.2
    • getResourceAsStream

      public InputStream getResourceAsStream(String name)
      指定されたリソースを読み込む入力ストリームを返します。

      検索順については、getResource(String)のドキュメントを参照してください。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージが無条件にopenedの場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      パラメータ:
      name - リソース名
      戻り値:
      リソースを読み取るための入力ストリーム。リソースが見つからなかった場合、リソースが無条件に開かれていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否される場合、null
      例外:
      NullPointerException - namenullである場合
      導入されたバージョン:
      1.1
    • getSystemResourceAsStream

      public static InputStream getSystemResourceAsStream(String name)
      クラスをロードするのに使用される検索パスから、指定された名前のリソースを、読込み用にオープンします。 このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってリソースを見つけます。

      名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 また、リソースの名前が".class"で終わる特殊なケースを除き、このメソッドは、パッケージが無条件にopenedの場合にのみ、指定されたモジュールのパッケージ内のリソースを検索します。

      パラメータ:
      name - リソース名
      戻り値:
      リソースを読み取るための入力ストリーム。リソースが見つからなかった場合、リソースが無条件に開かれていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否される場合、null
      導入されたバージョン:
      1.1
    • getParent

      public final ClassLoader getParent()
      委譲のための親クラス・ローダーを返します。 一部の実装では、ブートストラップ・クラス・ローダーを表すためにnullを使用できます。 このクラス・ローダーの親がブートストラップ・クラス・ローダーの場合、このメソッドはこのような実装でnullを返します。
      戻り値:
      ClassLoader
      例外:
      SecurityException - セキュリティ・マネージャが存在し、コール元のクラス・ローダーがnullでなく、このクラス・ローダーの祖先でもなく、コール元にRuntimePermission("getClassLoader")がない場合
      導入されたバージョン:
      1.2
    • getUnnamedModule

      public final Module getUnnamedModule()
      このクラス・ローダーの名前のないModuleを返します。
      戻り値:
      このクラス・ローダーの無名Module
      導入されたバージョン:
      9
      関連項目:
    • getPlatformClassLoader

      public static ClassLoader getPlatformClassLoader()
      プラットフォーム・クラス・ローダーを返します。 すべての「プラットフォーム・クラス」は、プラットフォーム・クラス・ローダーから参照できます。
      実装上のノート:
      組み込みプラットフォーム・クラス・ローダーの名前は"platform"です。
      戻り値:
      プラットフォームClassLoader
      例外:
      SecurityException - セキュリティ・マネージャが存在し、呼出し元のクラス・ローダーがnullではなく、呼出し元のクラス・ローダーがプラットフォーム・クラス・ローダーの祖先と同じでもなく、呼出し元にRuntimePermission("getClassLoader")がない場合
      導入されたバージョン:
      9
    • getSystemClassLoader

      public static ClassLoader getSystemClassLoader()
      システム・クラス・ローダーを返します。 これは、新しいClassLoaderインスタンスのデフォルトの委任の親であり、通常、アプリケーションの起動に使用されるクラス・ローダーです。

      このメソッドは、最初にランタイムの起動シーケンスの初期に呼び出され、その時点でシステム・クラス・ローダーが作成されます。 このクラス・ローダーは、メイン・アプリケーション・スレッド(たとえば、メイン・クラスのmainメソッドを呼び出すスレッドです)のコンテキスト・クラス・ローダーになります。

      デフォルトのシステム・クラス・ローダーは、このクラスの実装依存インスタンスです。

      このメソッドが最初に呼び出されたときにシステム・プロパティ"java.system.class.loader"が定義されている場合、このプロパティの値はシステム・クラス・ローダーとして返されるクラスの名前になります。 クラスはデフォルトのシステム・クラス・ローダーを使用してロードされ、委任の親として使用されるClassLoader型の単一パラメータをとるpublicコンストラクタを定義する必要があります。 次に、このコンストラクタを使用し、デフォルトのシステム・クラス・ローダーをパラメータに指定して、インスタンスが作成されます。 結果として得られるクラス・ローダーは、システム・クラス・ローダーとして定義されます。 構築中、クラス・ローダーはgetSystemClassLoader()をコールしないように十分に注意する必要があります。 システム・クラス・ローダーの循環初期化が検出されると、IllegalStateExceptionがスローされます。

      実装上のノート:
      システム・クラス・ローダーをオーバーライドするシステム・プロパティは、VMがほぼ完全に初期化されるまで検査されません。 起動時にこのメソッドを実行するコードは、システムが完全に初期化されるまで戻り値をキャッシュしないように注意してください。

      組み込みシステム・クラス・ローダーの名前は"app"です。 VMの初期化中にシステム・プロパティ"java.class.path"が読み取られ、クラス・パスが決定されます。 "java.class.path"プロパティの空の値は、初期モジュール(メイン・クラスを含むモジュール)の名前が付いているか、名前がないかによって、異なる方法で解釈されます: 名前付きの場合、組込みシステム・クラス・ローダーにはクラス・パスがなく、アプリケーション・モジュール・パスを使用してクラスおよびリソースを検索します。そうでない場合、名前がない場合は現在の作業ディレクトリへのクラス・パスが設定されます。

      クラス・パス上のJARファイルには、クラス・パスに含める依存JARファイルを指定するためのClass-Pathマニフェスト属性が含まれる場合があります。 Class-Pathエントリは、(詳細は、「JARファイルの仕様」を参照してください。)の妥当性について特定の条件を満たしている必要があります。 無効なClass-Pathエントリは無視されます。 デバッグの目的で、jdk.net.URLClassPath.showIgnoredClassPathEntriesシステム・プロパティがtrueに設定されている場合、無視されたエントリをコンソールに出力できます。

      戻り値:
      システムClassLoader
      例外:
      SecurityException - セキュリティ・マネージャが存在し、コール元のクラス・ローダーがnullではなく、システム・クラス・ローダーと同じでも祖先でもなく、コール元にRuntimePermission("getClassLoader")がない場合
      IllegalStateException - "java.system.class.loader"プロパティで指定されたクラス・ローダーの作成中に再帰的に呼び出された場合。
      Error - システム・プロパティ"java.system.class.loader"が定義されているが、指定されたクラスをロードできなかった場合、プロバイダ・クラスは必要なコンストラクタを定義しないか、そのコンストラクタが呼び出されたときに例外をスローします。 エラーの根本原因は、Throwable.getCause()メソッドを使用して取得できる。
    • definePackage

      protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
      このClassLoadernameでパッケージを定義します。

      「パッケージ名」は、クラス・ローダー内で一意である必要があり、作成後に再定義または変更することはできません。

      クラス・ローダーが、バージョン情報などの特定のプロパティを持つパッケージを定義する場合、クラス・ローダーは、defineClassをコールする前にこのdefinePackageメソッドをコールする必要があります。 それ以外の場合、defineClassメソッドは、新しく定義されたクラスのパッケージに対応するパッケージをこのクラス・ローダーに定義します。この定義済パッケージのプロパティは、Packageで指定されます。

      APIのノート:
      JAR内のクラスのパッケージを定義したいクラス・ローダーは、通常、JARのマニフェストの仕様タイトルと実装タイトル、バージョンおよびベンダーを使用します。 パッケージがJARのマニフェストでsealedとして指定されている場合、通常、JARファイルのURLsealBaseとして使用されます。 このクラス・ローダーで定義されたパッケージ'p'のクラスが複数のJARからロードされる場合、Packageオブジェクトには、定義されたパッケージ'p'の最初のクラスと、パッケージ'p'を明示的に定義するために最初に読み込まれるJARのマニフェストに応じて、異なる情報が含まれることがあります。

      クラス・ローダーは、「名前付きモジュール」でパッケージを明示的に定義するためにこのメソッドをコールしないことを強くお薦めします。かわりに、クラスが「定義されている」の場合、パッケージは自動的に定義されます。 Packageを明示的に定義することが望ましい場合は、名前付きモジュール内のすべてのパッケージが、Packageで指定されたプロパティで定義されていることを確認する必要があります。 それ以外の場合、名前付きモジュールの一部のPackageオブジェクトは、たとえば異なるシール・ベースでシールされる場合があります。

      パラメータ:
      name - 「パッケージ名」
      specTitle - 仕様のタイトル
      specVersion - 仕様のバージョン
      specVendor - 仕様のベンダー
      implTitle - 実装のタイトル
      implVersion - 実装のバージョン
      implVendor - 実装のベンダー
      sealBase - null以外の場合、このパッケージは、指定されたコード・ソースURLオブジェクトに関してシールされます。 そうでない場合、パッケージはシールされない
      戻り値:
      新しく定義されたPackageオブジェクト
      例外:
      NullPointerException - namenullの場合。
      IllegalArgumentException - 指定されたnameのパッケージがこのクラス・ローダーによってすでに定義されている場合
      Java Virtual Machine仕様を参照してください:
      5.3 作成およびロード
      導入されたバージョン:
      1.2
      関連項目:
    • getDefinedPackage

      public final Package getDefinedPackage(String name)
      このクラス・ローダーによって定義された、指定されたnamePackageを返します。
      パラメータ:
      name - 「パッケージ名」
      戻り値:
      このクラス・ローダーによって定義された指定された名前のPackage、または見つからなければnull
      例外:
      NullPointerException - namenullの場合。
      Java Virtual Machine仕様を参照してください:
      5.3 作成およびロード
      導入されたバージョン:
      9
    • getDefinedPackages

      public final Package[] getDefinedPackages()
      このクラス・ローダーによって定義されたすべてのPackageを返します。 返された配列には、同じ名前のPackageが重複していません。
      APIのノート:
      このメソッドは、既存のgetPackages()メソッドとの一貫性を保つために、SetまたはStreamではなく配列を返します。
      戻り値:
      このクラス・ローダーによって定義されたPackageオブジェクトの配列。このクラス・ローダーによってパッケージが定義されていない場合、長さがゼロの配列。
      Java Virtual Machine仕様を参照してください:
      5.3 作成およびロード
      導入されたバージョン:
      9
    • getPackage

      @Deprecated(since="9") protected Package getPackage(String name)
      非推奨。
      複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackageのルックアップ動作に依存して親ローダーからPackageを返す場合、Packageによって公開されるプロパティは期待どおりにならない場合があります残りのプログラム。 たとえば、Packageは、子ローダーによって定義されたpackage-info.classファイルに注釈が存在する場合でも、親ローダーによって定義されたpackage-info.classファイルからのみ注釈を公開します。 より堅牢なアプローチは、指定されたクラス・ローダーのPackageを返すgetDefinedPackage(java.lang.String)メソッドを使用することです。
      このクラス・ローダーとその祖先で、nameによってパッケージを検索します。

      このクラス・ローダーが指定された名前のPackageを定義すると、Packageが返されます。 それ以外の場合、このクラス・ローダーの祖先は、指定された名前のPackageを再帰的に(親による親)で検索されます。

      APIのノート:
      platform class loaderはアプリケーション・クラス・ローダーに委任できますが、アプリケーション・クラス・ローダーはその祖先ではありません。 プラットフォーム・クラス・ローダーで呼び出された場合、このメソッドはアプリケーション・クラス・ローダーに定義されているパッケージを検出しません。
      パラメータ:
      name - 「パッケージ名」
      戻り値:
      このクラス・ローダーまたはその祖先によって定義された指定された名前のPackage、または見つからない場合はnull
      例外:
      NullPointerException - namenullの場合。
      導入されたバージョン:
      1.2
      関連項目:
    • getPackages

      protected Package[] getPackages()
      このクラス・ローダーとその祖先によって定義されたすべてのPackageを返します。 返される配列には、同じパッケージ名の複数のPackageオブジェクトを含めることができます。各オブジェクトは、クラス・ローダー階層内の異なるクラス・ローダーによって定義されます。
      APIのノート:
      platform class loaderは、アプリケーション・クラス・ローダーに委任できます。 つまり、アプリケーション・クラス・ローダーに定義されているモジュール内のパッケージは、プラットフォーム・クラス・ローダーから参照できます。 一方、アプリケーション・クラス・ローダーは祖先ではないため、プラットフォーム・クラス・ローダーで起動された場合、このメソッドはアプリケーション・クラス・ローダーに定義されているパッケージを返しません。
      戻り値:
      このクラス・ローダーとその祖先によって定義されたPackageオブジェクトの配列
      導入されたバージョン:
      1.2
      関連項目:
    • findLibrary

      protected String findLibrary(String libname)
      ネイティブ・ライブラリの絶対パス名を返します。 VMは、このメソッドを呼び出して、このクラス・ローダーによってロードされたクラスのネイティブ・ライブラリを検索します。 このメソッドがnullを返す場合、VMは、"java.library.path"プロパティとして指定されたパスに従ってライブラリを検索します。
      パラメータ:
      libname - ライブラリ名
      戻り値:
      ネイティブ・ライブラリの絶対パス
      導入されたバージョン:
      1.2
      関連項目:
    • setDefaultAssertionStatus

      public void setDefaultAssertionStatus(boolean enabled)
      このクラス・ローダーのデフォルトのアサーション・ステータスを設定します。 この設定により、将来、このクラス・ローダーによってロードされ初期化されるクラスのアサーションがデフォルトで有効か無効かが決まります。 この設定をパッケージ単位またはクラス単位でオーバーライドするには、setPackageAssertionStatus(String, boolean)またはsetClassAssertionStatus(String, boolean)を呼び出します。
      パラメータ:
      enabled - このクラス・ローダーによってロードされたクラスがアサーションをデフォルトで有効にする場合はtrue、アサーションをデフォルトで無効にする場合はfalse
      導入されたバージョン:
      1.4
    • setPackageAssertionStatus

      public void setPackageAssertionStatus(String packageName, boolean enabled)
      指定されたパッケージ・デフォルトのアサーション・ステータスを設定します。 パッケージ・デフォルトのアサーション・ステータスにより、指定されたパッケージまたはその「サブパッケージ」のどれかに属する、将来初期化されるクラスのアサーション・ステータスが決まります。

      pという名前のパッケージのサブパッケージは、名前が"p."で始まる任意のパッケージです。 たとえば、javax.swing.textjavax.swingのサブパッケージで、java.utiljava.lang.reflectは両方ともjavaのサブパッケージです。

      1つのクラスに複数のパッケージ・デフォルトが適用される場合は、そのクラスにもっとも関連性の高いパッケージ・デフォルトが、ほかのパッケージ・デフォルトに優先して使用されます。 たとえば、javax.langjavax.lang.reflectの両方にパッケージのデフォルトが関連付けられている場合、後者のパッケージのデフォルトはjavax.lang.reflectのクラスに適用されます。

      パッケージ・デフォルトは、クラス・ローダーのデフォルトのアサーション・ステータスよりも優先されます。ただし、setClassAssertionStatus(String, boolean)を呼び出すことで、クラス単位でオーバーライドできます。

      パラメータ:
      packageName - パッケージ・デフォルトのアサーション・ステータスを設定するパッケージ名。 null値は、"current" (「Java言語仕様」7.4.2に関する項を参照してください。)である名前のないパッケージを示します
      enabled - このクラス・ローダーによってロードされ、指定されたパッケージまたはそのサブパッケージに属するクラスがデフォルトで有効になっている場合は、true。アサーションがデフォルトで無効になっている場合は、false
      導入されたバージョン:
      1.4
    • setClassAssertionStatus

      public void setClassAssertionStatus(String className, boolean enabled)
      このクラス・ローダーの指定されたトップレベル・クラスおよびそこに含まれるネストされたクラス内に対して、目的のアサーション・ステータスを設定します。 この設定は、クラス・ローダーのデフォルトのアサーション・ステータス、およびパッケージ単位で適用可能なデフォルトに優先されます。 指定されたクラスが初期化済みの場合、このメソッドは無効になります (クラスの初期化後にアサーション・ステータスを変更することはできないため)。

      指定されたクラスがトップ・レベルのクラスではない場合、この呼出しは、どのクラスのアサーション・ステータスに対しても影響を与えません。

      パラメータ:
      className - アサーション・ステータスを設定するトップ・レベルのクラスの完全指定クラス名。
      enabled - (およびif)の初期化時に指定されたクラスでアサーションを有効にする場合はtrue、クラスでアサーションを無効にする場合はfalse
      導入されたバージョン:
      1.4
    • clearAssertionStatus

      public void clearAssertionStatus()
      このクラス・ローダーのデフォルトのアサーション・ステータスをfalseに設定し、クラス・ローダーに関連付けられたパッケージ・デフォルトまたはクラス・アサーション・ステータス設定を破棄します。 このメソッドを利用すると、クラス・ローダーがコマンド行または永続的なアサーション・ステータス設定をすべて無視するため、「クリーンな状態で」起動できます。
      導入されたバージョン:
      1.4