- すべての実装されたインタフェース:
Closeable
,AutoCloseable
- 直系の既知のサブクラス:
MLet
public class URLClassLoader extends SecureClassLoader implements Closeable
jar:
スキームURL (JarURLConnection
を参照してください)は、JARファイルを参照するものとします。 '/'で終わる任意のfile:
スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてオープンされます。
このクラス・ローダーは、指定されたURLによって参照されるmulti-release JARファイルの内容からクラスおよびリソースのロードをサポートします。
URLClassLoaderのインスタンスを生成したスレッドのAccessControlContextは、そのあとにクラスおよびリソースをロードするときに使われます。
ロードされるクラスには、デフォルトでは、URLClassLoaderの作成時に指定されたURLだけに接続できるアクセス権が与えられます。
- 導入されたバージョン:
- 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)
委譲関係の親になっているデフォルトのClassLoader
を使って、指定されたURLの新しいURLClassLoaderを構築します。URLClassLoader(URL[] urls, ClassLoader parent)
指定されたURLの新しいURLClassLoaderを構築します。URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryのための新しいURLClassLoaderを構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 protected void
addURL(URL url)
指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。void
close()
このURLClassLoaderを閉じて、このローダーによって定義された新しいクラスやリソースをロードするために使用できなくします。protected Package
definePackage(String name, Manifest man, URL url)
このURLClassLoader
に新しいパッケージを名前で定義します。protected Class<?>
findClass(String name)
URL検索パスから、指定された名前を持つクラスを検索してロードします。URL
findResource(String name)
URL検索パス上で、指定された名前を持つリソースを検索します。Enumeration<URL>
findResources(String name)
URL検索パス上の指定された名前を持つリソースを表す、URLの列挙を返します。protected PermissionCollection
getPermissions(CodeSource codesource)
指定されたcodesourceオブジェクトのアクセス権を返します。InputStream
getResourceAsStream(String name)
指定されたリソースを読み込む入力ストリームを返します。URL[]
getURLs()
クラスおよびリソースをロードするためのURLの検索パスを返します。static URLClassLoader
newInstance(URL[] urls)
指定されたURLとデフォルトの親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。static URLClassLoader
newInstance(URL[] urls, ClassLoader parent)
指定されたURLと親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。クラス java.security.SecureClassLoaderで宣言されたメソッド
defineClass, defineClass
クラス java.lang.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
-
コンストラクタの詳細
-
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent)指定されたURLの新しいURLClassLoaderを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 任意のjar:
スキームURLは、JARファイルを参照するものとみなされます。 '/'で終わる任意のfile:
スキームURLは、ディレクトリを参照するものとみなされます。 それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャの
checkCreateClassLoader
メソッドを呼び出します。- パラメータ:
urls
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダー- 例外:
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
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダー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
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダー- 例外:
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
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダーfactory
−URLの作成時に使うURLStreamHandlerFactory- 例外:
IllegalArgumentException
- 指定された名前が空の場合。NullPointerException
-urls
またはその要素のいずれかがnull
であるかどうか。SecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoader
メソッドがクラス・ローダーの作成を許可しない場合。- 導入されたバージョン:
- 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つ目以降の例外は、キャッチされた最初の例外の抑制された例外として追加され、それが再スローされます。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 ClassNotFoundExceptionURL検索パスから、指定された名前を持つクラスを検索してロードします。 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 IOExceptionURL検索パス上の指定された名前を持つリソースを表す、URLの列挙を返します。- オーバーライド:
findResources
、クラス:ClassLoader
- パラメータ:
name
- リソース名- 戻り値:
URL
のEnumeration
。 ローダーが閉じている場合、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
-codesource
がnull
である場合。
-
newInstance
public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)指定されたURLと親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。 セキュリティ・マネージャがインストールされている場合、このメソッドから返されたURLClassLoaderのloadClass
メソッドは、クラスをロードする前にSecurityManager.checkPackageAccess
メソッドを呼び出します。- パラメータ:
urls
- クラスおよびリソースの検索対象のURLparent
- 委譲のための親クラス・ローダー- 戻り値:
- 結果として得られるクラス・ローダー
- 例外:
NullPointerException
-urls
またはその要素のいずれかがnull
であるかどうか。
-
newInstance
public static URLClassLoader newInstance(URL[] urls)指定されたURLとデフォルトの親クラス・ローダーに対する、URLClassLoaderの新しいインスタンスを作成します。 セキュリティ・マネージャがインストールされている場合、このメソッドから返されたURLClassLoaderのloadClass
メソッドは、クラスをロードする前にSecurityManager.checkPackageAccess
を呼び出します。- パラメータ:
urls
- クラスおよびリソースの検索対象のURL- 戻り値:
- 結果として得られるクラス・ローダー
- 例外:
NullPointerException
-urls
またはその要素のいずれかがnull
であるかどうか。
-