クラスURLClassLoader
java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
- すべての実装されたインタフェース:
Closeable, AutoCloseable
public class URLClassLoader extends SecureClassLoader implements Closeable
このクラス・ローダーは、JARファイルとディレクトリの両方を参照するURLの検索パスから、クラスとリソースをロードするために使用されます。
jar:スキームURL (JarURLConnectionを参照してください)は、JARファイルを参照するものとみなされます。 '/''で終わるfile:スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてオープンされます。
このクラス・ローダーは、指定されたURLによって参照されるmulti-release JARファイルの内容からのクラスおよびリソースのロードをサポートします。
- 導入されたバージョン:
- 1.2
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明URLClassLoader(String name, URL[] urls, ClassLoader parent) 指定されたURLの新しい名前URLClassLoaderを構築します。URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 指定されたURL、親クラス・ローダーおよびURLStreamHandlerFactoryの新しい名前付きURLClassLoaderを構築します。URLClassLoader(URL[] urls) 親としてのシステム・クラス・ローダーを使用して、指定されたURLの新しいURLClassLoaderを構築します。URLClassLoader(URL[] urls, ClassLoader parent) 指定されたURLの新しいURLClassLoaderを構築します。URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryのための新しいURLClassLoaderを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明protected void指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。voidclose()このURLClassLoaderを閉じて、このローダーによって定義された新しいクラスやリソースをロードするために使用できなくします。protected PackagedefinePackage(String name, Manifest man, URL url) このURLClassLoaderに新しいパッケージを名前で定義します。protected Class<?> URL検索パスから、指定された名前を持つクラスを検索してロードします。findResource(String name) URL検索パス上で、指定された名前を持つリソースを検索します。findResources(String name) URL検索パス上の指定された名前を持つリソースを表す、URLの列挙を返します。protected PermissionCollectiongetPermissions(CodeSource codesource) 「権限コレクションが空です」を返します。getResourceAsStream(String name) 指定されたリソースを読み込む入力ストリームを返します。URL[]getURLs()クラスおよびリソースをロードするためのURLの検索パスを返します。static URLClassLoadernewInstance(URL[] urls) 指定されたURLとデフォルトの親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。static URLClassLoadernewInstance(URL[] urls, ClassLoader parent) 指定されたURLと親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。クラスで宣言されたメソッド SecureClassLoader
defineClass, defineClass修飾子と型メソッド説明protected final Class<?> defineClass(String name, byte[] b, int off, int len, CodeSource cs) オプションのCodeSourceを使用して、バイトの配列をクラスClassのインスタンスに変換します。protected final Class<?> defineClass(String name, ByteBuffer b, CodeSource cs) オプションのCodeSourceを使って、ByteBufferをクラスClassのインスタンスに変換します。クラスで宣言されたメソッド ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners修飾子と型メソッド説明voidこのクラス・ローダーのデフォルトのアサーション・ステータスをfalseに設定し、クラス・ローダーに関連付けられたパッケージ・デフォルトまたはクラス・アサーション・ステータス設定を破棄します。protected final Class<?> defineClass(byte[] b, int off, int len) 非推奨。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 PackagedefinePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) このClassLoaderにnameでパッケージを定義します。protected Class<?> このクラス・ローダーに定義されているモジュール内で、指定された「バイナリ名」を持つクラスを検索します。protected StringfindLibrary(String libname) ネイティブ・ライブラリの絶対パス名を返します。protected final Class<?> findLoadedClass(String name) protected URLfindResource(String moduleName, String name) このクラス・ローダーに定義されているモジュール内のリソースへのURLを返します。protected final Class<?> findSystemClass(String name) 指定されたバイナリ名を持つクラスを探して、必要に応じてロードします。protected ObjectgetClassLoadingLock(String className) クラス・ロード操作用のロック・オブジェクトを返します。final PackagegetDefinedPackage(String name) このクラス・ローダーによって定義された、指定されたnameのPackageを返します。final Package[]このクラス・ローダーによって定義されたすべてのPackageを返します。getName()このクラス・ローダーの名前を返すか、このクラス・ローダーの名前が指定されていない場合はnullを返します。protected PackagegetPackage(String name) 非推奨。複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackageのルックアップ動作に依存して親ローダーからPackageを返す場合、Packageによって公開されるプロパティは期待どおりにならない場合があります残りのプログラム。protected Package[]このクラス・ローダーとその祖先によって定義されたすべてのPackageを返します。final ClassLoader委譲のための親クラス・ローダーを返します。static ClassLoaderプラットフォーム・クラス・ローダーを返します。getResource(String name) 指定された名前を持つリソースを検索します。getResources(String name) 指定された名前を持つすべてのリソースを検索します。static ClassLoaderシステム・クラス・ローダーを返します。static URLgetSystemResource(String name) クラスをロードするために使用される検索パスから、指定された名前のリソースを探します。static InputStreamクラスをロードするのに使用される検索パスから、指定された名前のリソースを、読込み用にオープンします。static Enumeration<URL> getSystemResources(String name) クラスをロードするために使用される検索パスから、指定された名前のすべてのリソースを探します。final Moduleこのクラス・ローダーの名前のないModuleを返します。final booleanこのクラス・ローダーが「並列対応」、それ以外の場合はfalseとして登録されている場合はtrueを返します。Class<?> 指定されたバイナリ名を持つクラスをロードします。protected Class<?> 指定されたバイナリ名を持つクラスをロードします。protected static boolean呼び出し元を「並列対応」として登録します。protected final voidresolveClass(Class<?> c) 指定されたクラスをリンクします。指定された名前を持つすべてのリソースのURLである要素を持つストリームを返します。voidsetClassAssertionStatus(String className, boolean enabled) このクラス・ローダーの指定されたトップレベル・クラスおよびそこに含まれるネストされたクラス内に対して、目的のアサーション・ステータスを設定します。voidsetDefaultAssertionStatus(boolean enabled) このクラス・ローダーのデフォルトのアサーション・ステータスを設定します。voidsetPackageAssertionStatus(String packageName, boolean enabled) 指定されたパッケージ・デフォルトのアサーション・ステータスを設定します。protected final voidsetSigners(Class<?> c, Object[] signers) クラスの署名者を設定します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
コンストラクタの詳細
-
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent) 指定されたURLの新しいURLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。jar:スキームURLは、JARファイルを参照するものとみなされます。 '/''で終わるfile:スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。- APIのノート:
parentがnull(ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。 ブートストラップ・クラス・ローダーおよびその他の組込みクラス・ローダーの詳細は、「ランタイム組込みクラス・ローダー」を参照してください。- パラメータ:
urls- クラスおよびリソースのロード元となるURLparent- 委任の親クラス・ローダー。ブートストラップ・クラス・ローダーのnullにできます- スロー:
NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。
-
URLClassLoader
public URLClassLoader(URL[] urls) 親としてのシステム・クラス・ローダーを使用して、指定されたURLの新しいURLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 「/」で終わるURLはすべて、ディレクトリを参照しているとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。- パラメータ:
urls- クラスおよびリソースのロード元となるURL- スロー:
NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。
-
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryのための新しいURLClassLoaderを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいJAR URLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。- APIのノート:
parentがnull(ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。 ブートストラップ・クラス・ローダーおよびその他の組込みクラス・ローダーの詳細は、「ランタイム組込みクラス・ローダー」を参照してください。- パラメータ:
urls- クラスおよびリソースのロード元となるURLparent- 委任の親クラス・ローダー。ブートストラップ・クラス・ローダーのnullにできますfactory−URLの作成時に使うURLStreamHandlerFactory- スロー:
NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。
-
URLClassLoader
public URLClassLoader(String name, URL[] urls, ClassLoader parent) 指定されたURLの新しい名前URLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 「/」で終わるURLはすべて、ディレクトリを参照しているとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。- APIのノート:
parentがnull(ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。 ブートストラップ・クラス・ローダーおよびその他の組込みクラス・ローダーの詳細は、「ランタイム組込みクラス・ローダー」を参照してください。- パラメータ:
name- クラス・ローダー名; 名前が付けられていない場合はnullurls- クラスおよびリソースのロード元となるURLparent- 委任の親クラス・ローダー。ブートストラップ・クラス・ローダーのnullにできます- スロー:
IllegalArgumentException- 指定された名前が空の場合。NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。- 導入されたバージョン:
- 9
-
URLClassLoader
public URLClassLoader(String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) 指定されたURL、親クラス・ローダーおよびURLStreamHandlerFactoryの新しい名前付きURLClassLoaderを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいJAR URLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。- APIのノート:
parentがnull(ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが表示される保証はありません。 ブートストラップ・クラス・ローダーおよびその他の組込みクラス・ローダーの詳細は、「ランタイム組込みクラス・ローダー」を参照してください。- パラメータ:
name- クラス・ローダー名; 名前が付けられていない場合はnullurls- クラスおよびリソースのロード元となるURLparent- 委任の親クラス・ローダー。ブートストラップ・クラス・ローダーのnullにできますfactory−URLの作成時に使うURLStreamHandlerFactory- スロー:
IllegalArgumentException- 指定された名前が空の場合。NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。- 導入されたバージョン:
- 9
-
-
メソッドの詳細
-
getResourceAsStream
public InputStream getResourceAsStream(String name) 指定されたリソースを読み込む入力ストリームを返します。 このローダーが閉じられた場合、このメソッドによって開かれたリソースはすべて閉じられます。検索順については、
ClassLoader.getResource(String)のドキュメントを参照してください。- オーバーライド:
getResourceAsStream、クラスClassLoader- パラメータ:
name- リソース名- 戻り値:
- リソースを読み込むための入力ストリーム。リソースが見つからなかった場合は
null - スロー:
NullPointerException-nameがnullである場合- 導入されたバージョン:
- 1.7
-
close
public void close() throws IOExceptionこのURLClassLoaderを閉じて、このローダーによって定義された新しいクラスやリソースをロードするために使用できなくします。 委譲階層におけるこのローダーの親が定義しているクラスとリソースには、引き続きアクセス可能です。 すでにロード済みのクラスやリソースにも、引き続きアクセス可能です。jar: URLおよびfile: URLの場合は、それによって開かれたファイルもすべて閉じられます。
closeメソッドが呼び出されたときに別のスレッドがクラスをロード中である場合、そのロードの結果は未定義となります。このメソッドは、
IOExceptionを内部的にキャッチすることで、開いているすべてのファイルをベスト・エフォートで閉じようとします。 非チェック例外とエラーはキャッチされません。 すでに閉じられたローダーに対してcloseを呼び出しても何の効果もありません。- 定義:
close、インタフェースAutoCloseable- 定義:
close、インタフェースCloseable- スロー:
IOException- 結果がIOExceptionになったこのクラス・ローダーによって開かれたファイルを閉じる場合。 こうした例外は内部的にキャッチされます。 1つだけがキャッチされた場合、再スローされます。 複数の例外がキャッチされた場合、2つ目以降の例外は、キャッチされた最初の例外の抑制された例外として追加され、それが再スローされます。- 導入されたバージョン:
- 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-nameがnullの場合。
-
definePackage
このURLClassLoaderに新しいパッケージを名前で定義します。 指定されたManifestに含まれる属性は、パッケージ・バージョンおよびシール情報の取得に使用されます。 シールされたパッケージの場合、そのパッケージのロード元となったコード・ソースURLを、追加のURLに指定します。- パラメータ:
name- パッケージ名man-Manifestパッケージのバージョンと封印情報を含むurl−パッケージのコード・ソースURL。ない場合はnull- 戻り値:
- 新しく定義された
Packageオブジェクト - スロー:
IllegalArgumentException- パッケージ名がこのクラス・ローダーによってすでに定義されている場合
-
findResource
URL検索パス上で、指定された名前を持つリソースを検索します。- オーバーライド:
findResource、クラスClassLoader- パラメータ:
name−リソースの名前- 戻り値:
- リソースの
URL。リソースが見つからなかった場合、またはローダーが閉じられている場合はnull。
-
findResources
public Enumeration<URL> findResources(String name) throws IOException URL検索パス上の指定された名前を持つリソースを表す、URLの列挙を返します。- オーバーライド:
findResources、クラスClassLoader- パラメータ:
name- リソース名- 戻り値:
URLのEnumeration。 ローダーが閉じている場合、Enumerationには要素は含まれません。- スロー:
IOException- 入出力例外が発生した場合
-
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource) 「権限コレクションが空です」を返します。- オーバーライド:
getPermissions、クラスSecureClassLoader- パラメータ:
codesource- theCodeSource- 戻り値:
- an 「権限コレクションが空です」
- スロー:
NullPointerException-codesourceがnullである場合。
-
newInstance
public static URLClassLoader newInstance(URL[] urls, ClassLoader parent) 指定されたURLと親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。- パラメータ:
urls- クラスおよびリソースの検索対象のURLparent- 委譲のための親クラス・ローダー- 戻り値:
- 結果として得られるクラス・ローダー
- スロー:
NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。
-
newInstance
public static URLClassLoader newInstance(URL[] urls) 指定されたURLとデフォルトの親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。- パラメータ:
urls- クラスおよびリソースの検索対象のURL- 戻り値:
- 結果として得られるクラス・ローダー
- スロー:
NullPointerException-urlsまたはその要素のいずれかがnullであるかどうか。
-
defineClass(String, byte[], int, int)に置き換えられます