Foundation 1.1.2

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 ファイルを参照しているとみなされます。JAR ファイルは必要に応じてオープンされます。 

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

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

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

コンストラクタの概要
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 リストに追加します。
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, 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 ファイルを参照しているとみなされます。JAR ファイルは必要に応じてダウンロードおよびオープンされます。

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

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

URLClassLoader

public URLClassLoader(URL[] urls)
委譲関係の親になっているデフォルトの ClassLoader を使って、指定された URL の新しい URLClassLoader を構築します。URL は、親クラスローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。「/」で終わる URL はすべて、ディレクトリを参照しているとみなされます。それ以外の場合、URL は JAR ファイルを参照しているとみなされます。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 - このクラスローダーまたはその上位クラスローダーのいずれかに含まれる既存のパッケージと、このパッケージの名前が重複している場合

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 - リソース名
戻り値:
URL列挙
例外:
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
戻り値:
結果として得られるクラスローダー

Foundation 1.1.2

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。