public class URLClassLoader extends SecureClassLoader implements Closeable
URLClassLoaderのインスタンスを生成したスレッドのAccessControlContextは、そのあとにクラスおよびリソースをロードするときに使われます。
ロードされるクラスには、デフォルトでは、URLClassLoaderの作成時に指定されたURLだけに接続できるアクセス権が与えられます。
コンストラクタと説明 |
---|
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)
このClassLoaderで名前を使って新しいパッケージを定義します。
|
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の新しいインスタンスを作成します。
|
defineClass, defineClass
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public URLClassLoader(URL[] urls, ClassLoader parent)
セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoader
メソッドを呼び出します。
urls
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダーSecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoader
メソッドがクラス・ローダーの作成を許可しない場合。NullPointerException
- urls
がnull
である場合。SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls)
ClassLoader
を使って、指定されたURLの新しいURLClassLoaderを構築します。URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。「/」で終わるURLはすべて、ディレクトリを参照しているとみなされます。それ以外の場合、URLはJARファイルを参照しているとみなされます。JARファイルは必要に応じてダウンロードおよびオープンされます。
セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoader
メソッドを呼び出します。
urls
- クラスおよびリソースのロード元となるURLSecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoader
メソッドがクラス・ローダーの作成を許可しない場合。NullPointerException
- urls
がnull
である場合。SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
セキュリティ・マネージャが存在する場合、このクラス・ローダーの作成が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckCreateClassLoader
メソッドを呼び出します。
urls
- クラスおよびリソースのロード元となるURLparent
- 委譲のための親クラス・ローダーfactory
−URLの作成時に使うURLStreamHandlerFactorySecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoader
メソッドがクラス・ローダーの作成を許可しない場合。NullPointerException
- urls
がnull
である場合。SecurityManager.checkCreateClassLoader()
public InputStream getResourceAsStream(String name)
検索順については、ClassLoader.getResource(String)
のドキュメントを参照してください。
getResourceAsStream
、クラス: ClassLoader
name
- リソース名null
public void close() throws IOException
jar: URLおよびfile: URLの場合は、それによって開かれたファイルもすべて閉じられます。close
メソッドが呼び出されたときに別のスレッドがクラスをロード中である場合、そのロードの結果は未定義となります。
このメソッドは、IOException
を内部的にキャッチすることで、開いているすべてのファイルをベスト・エフォートで閉じようとします。非チェック例外とエラーはキャッチされません。すでに閉じられたローダーに対してcloseを呼び出しても何の効果もありません。
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
IOException
- 結果がIOExceptionになったこのクラス・ローダーによって開かれたファイルを閉じる場合。こうした例外は内部的にキャッチされます。1つだけがキャッチされた場合、再スローされます。複数の例外がキャッチされた場合、2つ目以降の例外は、キャッチされた最初の例外の抑制された例外として追加され、それが再スローされます。SecurityException
- セキュリティ・マネージャが設定され、それがRuntimePermission
(「closeClassLoader」)
を拒否した場合protected void addURL(URL url)
指定されたURLが、null
であるか、URLのリストにすでに含まれている場合、または、このローダーが閉じられている場合、このメソッドを呼び出しても何の効果もありません。
url
- URLの検索パスに追加するURLpublic URL[] getURLs()
protected Class<?> findClass(String name) throws ClassNotFoundException
findClass
、クラス: ClassLoader
name
−クラスの名前ClassNotFoundException
- クラスが見つからなかった場合。またはローダーが閉じられている場合。NullPointerException
- name
がnull
の場合。protected Package definePackage(String name, Manifest man, URL url) throws IllegalArgumentException
name
- パッケージ名man
−パッケージのバージョン、およびシーリング情報を含むマニフェストurl
−パッケージのコード・ソースURL。ない場合はnullIllegalArgumentException
−このクラス・ローダーまたはその上位クラス・ローダーのいずれかに含まれる既存のパッケージと、このパッケージの名前が重複している場合public URL findResource(String name)
findResource
、クラス: ClassLoader
name
−リソースの名前URL
。リソースが見つからなかった場合、またはローダーが閉じられている場合はnull
。public Enumeration<URL> findResources(String name) throws IOException
findResources
、クラス: ClassLoader
name
- リソース名URL
の列挙
。ローダーが閉じられている場合、列挙は空になります。IOException
- 入出力例外が発生した場合protected PermissionCollection getPermissions(CodeSource codesource)
このURLのプロトコルが「jar」の場合、許可されるアクセス権は、JARファイルのURLが必要とするアクセス権に基づいたものとなります。
プロトコルが「file」で、機関コンポーネントが存在する場合、その機関に接続し、機関からの接続を受け入れるアクセス権が付与される場合があります。プロトコルが「file」で、パスとしてファイルが指定されている場合には、そのファイルの読取り権が許可されます。プロトコルが「file」で、パスがディレクトリである場合には、そのディレクトリ内に含まれるすべてのファイルの読取り権と、(再帰的に)すべてのファイルとサブディレクトリの読取り権が、許可されます。
プロトコルが「file」ではない場合は、URLで指定されたホストに接続し、そのホストからの接続を受け入れるアクセス権が付与されます。
getPermissions
、クラス: SecureClassLoader
codesource
- コード・ソースNullPointerException
- codesource
がnull
である場合。public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
loadClass
メソッドは、クラスをロードする前にSecurityManager.checkPackageAccess
メソッドを呼び出します。urls
- クラスおよびリソースの検索対象のURLparent
- 委譲のための親クラス・ローダーNullPointerException
- urls
がnull
である場合。public static URLClassLoader newInstance(URL[] urls)
loadClass
メソッドは、クラスをロードする前にSecurityManager.checkPackageAccess
を呼び出します。urls
- クラスおよびリソースの検索対象のURLNullPointerException
- urls
がnull
である場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.