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
メソッドがクラスローダーの作成を許可しない場合。SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls)
ClassLoader
を使って、指定された URL の新しい URLClassLoader を構築します。URL は、親クラスローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。「/」で終わる URL はすべて、ディレクトリを参照しているとみなされます。それ以外の場合、URL は JAR ファイルを参照しているとみなされます。JAR ファイルは必要に応じてダウンロードおよびオープンされます。
セキュリティーマネージャーが存在する場合、このクラスローダーの作成が許可されるように、このメソッドは最初にセキュリティーマネージャーの checkCreateClassLoader
メソッドを呼び出します。
urls
- クラスおよびリソースのロード元となる URLSecurityException
- セキュリティーマネージャーが存在し、その checkCreateClassLoader
メソッドがクラスローダーの作成を許可しない場合。SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
セキュリティーマネージャーが存在する場合、このクラスローダーの作成が許可されるように、このメソッドは最初にセキュリティーマネージャーの checkCreateClassLoader
メソッドを呼び出します。
urls
- クラスおよびリソースのロード元となる URLparent
- 委譲のための親クラスローダーfactory
− URL の作成時に使う URLStreamHandlerFactorySecurityException
- セキュリティーマネージャーが存在し、その checkCreateClassLoader
メソッドがクラスローダーの作成を許可しない場合。SecurityManager.checkCreateClassLoader()
public InputStream getResourceAsStream(String name)
検索順については、ClassLoader.getResource(String)
のドキュメントを参照してください。
getResourceAsStream
、クラス: ClassLoader
name
- リソース名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
- クラスが見つからなかった場合。またはローダーが閉じられている場合。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
- コードソースpublic static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
loadClass
メソッドは、クラスをロードする前に SecurityManager.checkPackageAccess
メソッドを呼び出します。urls
- クラスおよびリソースの検索対象の URLparent
- 委譲のための親クラスローダーpublic static URLClassLoader newInstance(URL[] urls)
loadClass
メソッドは、クラスをロードする前に SecurityManager.checkPackageAccess
を呼び出します。urls
- クラスおよびリソースの検索対象の URL バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.