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

クラスURLClassLoader

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable
    直系の既知のサブクラス:
    MLet

    public class URLClassLoader
    extends SecureClassLoader
    implements Closeable
    このクラス・ローダーは、JARファイルとディレクトリの両方を参照するURLの検索パスから、クラスとリソースをロードするために使用されます。 任意のjar:スキームURL (JarURLConnectionを参照してください)は、JARファイルを参照するものとします。 '/'で終わる任意のfile:スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてオープンされます。

    このクラス・ローダーは、指定されたURLによって参照されるmulti-release JARファイルの内容からクラスおよびリソースのロードをサポートします。

    URLClassLoaderのインスタンスを生成したスレッドのAccessControlContextは、そのあとにクラスおよびリソースをロードするときに使われます。

    ロードされるクラスには、デフォルトでは、URLClassLoaderの作成時に指定されたURLだけに接続できるアクセス権が与えられます。

    導入されたバージョン:
    1.2
    • コンストラクタの詳細

      • URLClassLoader

        public URLClassLoader​(URL[] urls,
                              ClassLoader parent)
        指定されたURLの新しいURLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 任意のjar:スキームURLは、JARファイルを参照するものとみなされます。 '/'で終わる任意のfile:スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。

        セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoaderメソッドを呼び出します。

        パラメータ:
        urls - クラスおよびリソースのロード元となるURL
        parent - 委譲のための親クラス・ローダー
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドがクラス・ローダーの作成を許可しない場合。
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
        関連項目:
        SecurityManager.checkCreateClassLoader()
      • URLClassLoader

        public URLClassLoader​(URL[] urls)
        委譲関係の親になっているデフォルトのClassLoaderを使って、指定されたURLの新しいURLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 「/」で終わるURLはすべて、ディレクトリを参照しているとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。

        セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoaderメソッドを呼び出します。

        パラメータ:
        urls - クラスおよびリソースのロード元となるURL
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドがクラス・ローダーの作成を許可しない場合。
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
        関連項目:
        SecurityManager.checkCreateClassLoader()
      • URLClassLoader

        public URLClassLoader​(URL[] urls,
                              ClassLoader parent,
                              URLStreamHandlerFactory factory)
        指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryのための新しいURLClassLoaderを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいJAR URLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。

        セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoaderメソッドを呼び出します。

        パラメータ:
        urls - クラスおよびリソースのロード元となるURL
        parent - 委譲のための親クラス・ローダー
        factory−URLの作成時に使うURLStreamHandlerFactory
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドがクラス・ローダーの作成を許可しない場合。
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
        関連項目:
        SecurityManager.checkCreateClassLoader()
      • URLClassLoader

        public URLClassLoader​(String name,
                              URL[] urls,
                              ClassLoader parent)
        指定されたURLの新しい名前URLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 「/」で終わるURLはすべて、ディレクトリを参照しているとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。
        パラメータ:
        name - クラス・ローダー名;名前が付けられていない場合はnull
        urls - クラスおよびリソースのロード元となるURL
        parent - 委譲のための親クラス・ローダー
        例外:
        IllegalArgumentException - 指定された名前が空の場合。
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
        SecurityException - セキュリティ・マネージャが存在し、SecurityManager.checkCreateClassLoader()メソッドがクラス・ローダーの作成を許可しない場合。
        導入されたバージョン:
        9
      • URLClassLoader

        public URLClassLoader​(String name,
                              URL[] urls,
                              ClassLoader parent,
                              URLStreamHandlerFactory factory)
        指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryの新しい名前URLClassLoaderを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいJAR URLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。
        パラメータ:
        name - クラス・ローダー名;名前が付けられていない場合はnull
        urls - クラスおよびリソースのロード元となるURL
        parent - 委譲のための親クラス・ローダー
        factory−URLの作成時に使うURLStreamHandlerFactory
        例外:
        IllegalArgumentException - 指定された名前が空の場合。
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドがクラス・ローダーの作成を許可しない場合。
        導入されたバージョン:
        9
    • メソッドの詳細

      • getResourceAsStream

        public InputStream getResourceAsStream​(String name)
        指定されたリソースを読み込む入力ストリームを返します。 このローダーが閉じられた場合、このメソッドによって開かれたリソースはすべて閉じられます。

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

        オーバーライド:
        getResourceAsStream、クラスClassLoader
        パラメータ:
        name - リソース名
        戻り値:
        リソースを読み込むための入力ストリーム。リソースが見つからなかった場合はnull
        例外:
        NullPointerException - namenullである場合
        導入されたバージョン:
        1.7
      • close

        public void close()
                   throws IOException
        このURLClassLoaderを閉じて、このローダーによって定義された新しいクラスやリソースをロードするために使用できなくします。 委譲階層におけるこのローダーの親が定義しているクラスとリソースには、引き続きアクセス可能です。 すでにロード済みのクラスやリソースにも、引き続きアクセス可能です。

        jar: URLおよびfile: URLの場合は、それによって開かれたファイルもすべて閉じられます。 closeメソッドが呼び出されたときに別のスレッドがクラスをロード中である場合、そのロードの結果は未定義となります。

        このメソッドは、IOExceptionを内部的にキャッチすることで、開いているすべてのファイルをベスト・エフォートで閉じようとします。 非チェック例外とエラーはキャッチされません。 すでに閉じられたローダーに対してcloseを呼び出しても何の効果もありません。

        定義:
        close、インタフェースAutoCloseable
        定義:
        close、インタフェースCloseable
        例外:
        IOException - 結果がIOExceptionになったこのクラス・ローダーによって開かれたファイルを閉じる場合。 こうした例外は内部的にキャッチされます。 1つだけがキャッチされた場合、再スローされます。 複数の例外がキャッチされた場合、2つ目以降の例外は、キャッチされた最初の例外の抑制された例外として追加され、それが再スローされます。
        SecurityException - セキュリティ・マネージャが設定され、それがRuntimePermission(「closeClassLoader」)を拒否した場合
        導入されたバージョン:
        1.7
      • addURL

        protected void addURL​(URL url)
        指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。

        指定されたURLが、nullであるか、URLのリストにすでに含まれている場合、または、このローダーが閉じられている場合、このメソッドを呼び出しても何の効果もありません。

        パラメータ:
        url - URLの検索パスに追加するURL
      • getURLs

        public URL[] getURLs()
        クラスおよびリソースをロードするためのURLの検索パスを返します。 これには、コンストラクタに指定されたURLの元のリストと、あとでaddURL()メソッドによって追加されたURLも含まれます。
        戻り値:
        クラスおよびリソースをロードするためのURLの検索パス。
      • findClass

        protected Class<?> findClass​(String name)
                              throws ClassNotFoundException
        URL検索パスから、指定された名前を持つクラスを検索してロードします。 JARファイルを参照しているURLはすべて、クラスが見つかるまで必要に応じてロードおよびオープンされます。
        オーバーライド:
        findClass、クラスClassLoader
        パラメータ:
        name−クラスの名前
        戻り値:
        結果として得られるクラス
        例外:
        ClassNotFoundException - クラスが見つからなかった場合。またはローダーが閉じられている場合。
        NullPointerException - namenullの場合。
      • definePackage

        protected Package definePackage​(String name,
                                        Manifest man,
                                        URL url)
        このURLClassLoaderに新しいパッケージを名前で定義します。 指定されたManifestに含まれる属性は、パッケージのバージョンとシーリング情報を取得するために使用されます。 シールされたパッケージの場合、そのパッケージのロード元となったコード・ソースURLを、追加のURLに指定します。
        パラメータ:
        name - パッケージ名
        man - Manifestパッケージのバージョンとシーリング情報を含む
        url−パッケージのコード・ソースURL。ない場合はnull
        戻り値:
        新しく定義されたPackageオブジェクト
        例外:
        IllegalArgumentException - パッケージ名がこのクラス・ローダーによってすでに定義されている場合
      • findResource

        public URL findResource​(String name)
        URL検索パス上で、指定された名前を持つリソースを検索します。
        オーバーライド:
        findResource、クラスClassLoader
        パラメータ:
        name−リソースの名前
        戻り値:
        リソースのURL。リソースが見つからなかった場合、またはローダーが閉じられている場合はnull
      • findResources

        public Enumeration<URL> findResources​(String name)
                                       throws IOException
        URL検索パス上の指定された名前を持つリソースを表す、URLの列挙を返します。
        オーバーライド:
        findResources、クラスClassLoader
        パラメータ:
        name - リソース名
        戻り値:
        URLEnumeration ローダーが閉じている場合、Enumerationには要素は含まれません。
        例外:
        IOException - 入出力例外が発生した場合
      • getPermissions

        protected PermissionCollection getPermissions​(CodeSource codesource)
        指定されたcodesourceオブジェクトのアクセス権を返します。 このメソッドの実装はまず、super.getPermissionsを呼び出し、次に、codesourceのURLに基づいてアクセス権を追加します。

        このURLのプロトコルが「jar」の場合、許可されるアクセス権は、JARファイルのURLが必要とするアクセス権に基づいたものとなります。

        プロトコルが「file」で、機関コンポーネントが存在する場合、その機関に接続し、機関からの接続を受け入れるアクセス権が付与される場合があります。 プロトコルが「file」で、パスとしてファイルが指定されている場合には、そのファイルの読取り権が許可されます。 プロトコルが「file」で、パスがディレクトリである場合には、そのディレクトリ内に含まれるすべてのファイルの読取り権と、(再帰的に)すべてのファイルとサブディレクトリの読取り権が、許可されます。

        プロトコルが「file」ではない場合は、URLで指定されたホストに接続し、そのホストからの接続を受け入れるアクセス権が付与されます。

        オーバーライド:
        getPermissions、クラスSecureClassLoader
        パラメータ:
        codesource - コード・ソース
        戻り値:
        コード・ソースに与えられたアクセス権
        例外:
        NullPointerException - codesourcenullである場合。
      • newInstance

        public static URLClassLoader newInstance​(URL[] urls,
                                                 ClassLoader parent)
        指定されたURLと親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。 セキュリティ・マネージャがインストールされている場合、このメソッドから返されたURLClassLoaderのloadClassメソッドは、クラスをロードする前にSecurityManager.checkPackageAccessメソッドを呼び出します。
        パラメータ:
        urls - クラスおよびリソースの検索対象のURL
        parent - 委譲のための親クラス・ローダー
        戻り値:
        結果として得られるクラス・ローダー
        例外:
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。
      • newInstance

        public static URLClassLoader newInstance​(URL[] urls)
        指定されたURLとデフォルトの親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。 セキュリティ・マネージャがインストールされている場合、このメソッドから返されたURLClassLoaderのloadClassメソッドは、クラスをロードする前にSecurityManager.checkPackageAccessを呼び出します。
        パラメータ:
        urls - クラスおよびリソースの検索対象のURL
        戻り値:
        結果として得られるクラス・ローダー
        例外:
        NullPointerException - urlsまたはその要素のいずれかがnullであるかどうか。