JavaTM 2
Platform
Std. Ed. v1.4.0

java.net
クラス URLClassLoader

java.lang.Object
  |
  +--java.lang.ClassLoader
        |
        +--java.security.SecureClassLoader
              |
              +--java.net.URLClassLoader

public class URLClassLoader
extends SecureClassLoader

このクラスローダは、JAR ファイルおよびディレクトリの両方を参照する URL の検索パスから、クラスおよびリソースをダウンロードするために使います。「/」で終わる URL は、ディレクトリを参照していると見なされます。その他の URL は、必要に応じて開かれる JAR ファイルを参照していると見なされます。

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

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

導入されたバージョン:
1.2

コンストラクタの概要
URLClassLoader(URL[] urls)
          指定された URL の新しい URLClassLoader を、デフォルトの委譲の親である ClassLoader を使って構築します。
URLClassLoader(URL[] urls, ClassLoader parent)
          指定された URL の新しい URLClassLoader を構築します。
URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
          指定された URL、親クラスローダ、および URLStreamHandlerFactory のための、新しい URLClassLoader を構築します。
 
メソッドの概要
protected  void addURL(URL url)
          指定された URL を、クラスおよびリソースを検索するための URL リストに追加します。
protected  Package definePackage(String name, Manifest man, URL url)
          新しいパッケージを、この ClassLoader で名前を指定して定義します。
protected  Class findClass(String name)
          URL 検索パスから、指定された名前を持つクラスを検索してロードします。
 URL findResource(String name)
          URL 検索パス上で、指定された名前を持つリソースを検索します。
 Enumeration findResources(String name)
          URL 検索パス上の指定された名前を持つリソースを表す、URL の列挙を返します。
protected  PermissionCollection getPermissions(CodeSource codesource)
          指定された codesource オブジェクトのアクセス権を返します。
 URL[] getURLs()
          クラスおよびリソースをロードするための URL の検索パスを返します。
static URLClassLoader newInstance(URL[] urls)
          指定された URL、およびデフォルトの親クラスローダについて、URLClassLoader の新しいインスタンスを作成します。
static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
          指定された URL、および親クラスローダについて、URLClassLoader の新しいインスタンスを作成します。
 
クラス java.security.SecureClassLoader から継承したメソッド
defineClass
 
クラス java.lang.ClassLoader から継承したメソッド
clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

URLClassLoader

public URLClassLoader(URL[] urls,
                      ClassLoader parent)
指定された URL の新しい URLClassLoader を構築します。URL の検索は、指定された親クラスローダで最初に検索したあとに、クラスおよびリソースに指定された順序で行われます。「/」で終わる URL は、ディレクトリを参照していると見なされます。その他の URL は、必要に応じてダウンロードして開かれる、JAR ファイルを参照していると見なされます。

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

パラメータ:
urls - クラスおよびリソースのロード元となる URL
parent - 委譲のための親クラスローダ
例外:
SecurityException - セキュリティマネージャが存在し、その checkCreateClassLoader メソッドがクラスローダの作成を許可しない場合
関連項目:
SecurityManager.checkCreateClassLoader()

URLClassLoader

public URLClassLoader(URL[] urls)
指定された URL の新しい URLClassLoader を、デフォルトの委譲の親である ClassLoader を使って構築します。この URL は、親クラスローダで最初に検索されたあとに、クラスおよびリソースに指定された順序で検索されます。「/」で終わる URL は、ディレクトリを参照していると見なされます。その他の URL は、必要に応じてダウンロードして開かれる、JAR ファイルを参照していると見なされます。

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

パラメータ:
urls - クラスおよびリソースのロード元となる URL
例外:
SecurityException - セキュリティマネージャが存在し、その checkCreateClassLoader メソッドがクラスローダの作成を許可しない場合
関連項目:
SecurityManager.checkCreateClassLoader()

URLClassLoader

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

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

パラメータ:
urls - クラスおよびリソースのロード元となる URL
parent - 委譲のための親クラスローダ
factory - URL の作成時に使う URLStreamHandlerFactory
例外:
SecurityException - セキュリティマネージャが存在し、その checkCreateClassLoader メソッドがクラスローダの作成を許可しない場合
関連項目:
SecurityManager.checkCreateClassLoader()
メソッドの詳細

addURL

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

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

getURLs

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

戻り値:
クラスおよびリソースをロードするための URL の検索パス

findClass

protected Class findClass(String name)
                   throws ClassNotFoundException
URL 検索パスから、指定された名前を持つクラスを検索してロードします。クラスが見つかるまでは、JAR ファイルを参照する URL が、必要に応じてロードされて開かれます。

オーバーライド:
クラス ClassLoader 内の findClass
パラメータ:
name - クラスの名前
戻り値:
結果として得られたクラス
例外:
ClassNotFoundException - クラスが見つからない場合

definePackage

protected Package definePackage(String name,
                                Manifest man,
                                URL url)
                         throws IllegalArgumentException
新しいパッケージを、この ClassLoader で名前を指定して定義します。指定されたマニフェストに含まれる属性は、パッケージのバージョン、およびシーリングの情報を取得するために使います。シールされたパッケージについては、追加の URL が、パッケージのロード元となるコードソース URL を指定します。

パラメータ:
name - パッケージ名
man - パッケージのバージョン、およびシーリング情報を含むマニフェスト
url - パッケージのコードソース URL。ない場合は null
戻り値:
新しく定義された Package オブジェクト
例外:
IllegalArgumentException - パッケージ名が、このクラスローダかまたはその上位クラスローダのうちの 1 つに存在するパッケージと重複する場合

findResource

public URL findResource(String name)
URL 検索パス上で、指定された名前を持つリソースを検索します。

オーバーライド:
クラス ClassLoader 内の findResource
パラメータ:
name - リソースの名前
戻り値:
リソースの URL。リソースが見つからなかった場合は null

findResources

public Enumeration findResources(String name)
                          throws IOException
URL 検索パス上の指定された名前を持つリソースを表す、URL の列挙を返します。

オーバーライド:
クラス ClassLoader 内の findResources
パラメータ:
name - リソース名
戻り値:
URLEnumeration
例外:
IOException - 入出力例外が発生した場合

getPermissions

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

プロトコルが「file」であり、パスがファイルを指定している場合は、そのファイルを読み取るアクセス権が与えられます。プロトコルが「file」であり、パス指定がディレクトリである場合、アクセス権は、そのディレクトリに含まれるすべてのファイルの読み取りと、再帰的に、ディレクトリのすべてのファイルおよびサブディレクトリの読み取りについて与えられます。

プロトコルが「file」ではない場合は、URL で指定されたホストについて、ホストへの接続、ホストからの接続受け入れが許可されます。

オーバーライド:
クラス SecureClassLoader 内の getPermissions
パラメータ:
codesource - コードソース
戻り値:
コードソースに与えられたアクセス権

newInstance

public static URLClassLoader newInstance(URL[] urls,
                                         ClassLoader parent)
指定された URL、および親クラスローダについて、URLClassLoader の新しいインスタンスを作成します。セキュリティマネージャがインストールされている場合、このメソッドが返す URLClassLoader の loadClass メソッドは、このクラスをロードする前に SecurityManager.checkPackageAccess メソッドを呼び出します。

パラメータ:
urls - クラスおよびリソースの検索対象の URL
parent - 委譲のための親クラスローダ
戻り値:
結果として得られたクラスローダ

newInstance

public static URLClassLoader newInstance(URL[] urls)
指定された URL、およびデフォルトの親クラスローダについて、URLClassLoader の新しいインスタンスを作成します。セキュリティマネージャがインストール済みである場合、このメソッドが返す URLClassLoader の loadClass メソッドは、このクラスをロードする前に SecurityManager.checkPackageAccess メソッドを呼び出します。

パラメータ:
urls - クラスおよびリソースの検索対象の URL
戻り値:
結果として得られたクラスローダ

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.