org.seasar.framework.util
クラス ClassLoaderUtil

java.lang.Object
  拡張org.seasar.framework.util.ClassLoaderUtil

public abstract class ClassLoaderUtil
extends Object

ClassLoaderを扱うためのユーティリティ・クラスです。

作成者:
koichik

メソッドの概要
static Class defineClass(ClassLoader classLoader, String className, byte[] bytes, int offset, int length)
          バイトの配列をClassクラスのインスタンスに変換します。
static Package definePackage(ClassLoader classLoader, String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
          指定のClassLoaderで名前を使ってパッケージを定義します。
static Class findLoadedClass(ClassLoader classLoader, String className)
          指定のクラスローダまたはその祖先の暮らすローダが、 このバイナリ名を持つクラスの起動ローダとしてJava仮想マシンにより記録されていた場合は、 指定されたバイナリ名を持つクラスを返します。
static ClassLoader getClassLoader(Class targetClass)
          クラスローダを返します。
static Iterator getResources(ClassLoader loader, String name)
          指定のクラスローダから指定された名前を持つすべてのリソースを探します。
static Iterator getResources(Class targetClass, String name)
          getClassLoader(Class)が返すクラスローダから指定された名前を持つすべてのリソースを探します。
static Iterator getResources(String name)
          コンテキストクラスローダから指定された名前を持つすべてのリソースを探します。
protected static boolean isAncestor(ClassLoader cl, ClassLoader other)
          クラスローダotherがクラスローダclの祖先ならtrueを返します。
static Class loadClass(ClassLoader loader, String className)
          指定されたバイナリ名を持つクラスをロードします。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getClassLoader

public static ClassLoader getClassLoader(Class targetClass)
クラスローダを返します。

クラスローダは以下の順で検索します。

  1. 呼び出されたスレッドにコンテキスト・クラスローダが設定されている場合はそのコンテキスト・クラスローダ
  2. ターゲット・クラスをロードしたクラスローダを取得できればそのクラスローダ
  3. このクラスをロードしたクラスローダを取得できればそのクラスローダ
  4. システムを取得できればそのクラスローダ

ただし、ターゲット・クラスをロードしたクラスローダとこのクラスをロードしたクラスローダの両方が取得できた場合で、 ターゲット・クラスをロードしたクラスローダがこのクラスをロードしたクラスローダの祖先であった場合は、 このクラスをロードしたクラスローダを返します。

パラメータ:
targetClass - ターゲット・クラス
戻り値:
クラスローダ
例外:
IllegalStateException - クラスローダを取得できなかった場合

getResources

public static Iterator getResources(String name)
コンテキストクラスローダから指定された名前を持つすべてのリソースを探します。

パラメータ:
name - リソース名
戻り値:
リソースに対する URL オブジェクトの列挙。リソースが見つからなかった場合、列挙は空になる。クラスローダがアクセスを持たないリソースは列挙に入らない
関連項目:
ClassLoader.getResources(String)

getResources

public static Iterator getResources(Class targetClass,
                                    String name)
getClassLoader(Class)が返すクラスローダから指定された名前を持つすべてのリソースを探します。

パラメータ:
targetClass - ターゲット・クラス
name - リソース名
戻り値:
リソースに対する URL オブジェクトの列挙。リソースが見つからなかった場合、列挙は空になる。クラスローダがアクセスを持たないリソースは列挙に入らない
関連項目:
ClassLoader.getResources(String)

getResources

public static Iterator getResources(ClassLoader loader,
                                    String name)
指定のクラスローダから指定された名前を持つすべてのリソースを探します。

パラメータ:
loader - クラスローダ
name - リソース名
戻り値:
リソースに対する URL オブジェクトの列挙。リソースが見つからなかった場合、列挙は空になる。クラスローダがアクセスを持たないリソースは列挙に入らない
関連項目:
ClassLoader.getResources(String)

isAncestor

protected static boolean isAncestor(ClassLoader cl,
                                    ClassLoader other)
クラスローダotherがクラスローダclの祖先ならtrueを返します。

パラメータ:
cl - クラスローダ
other - クラスローダ
戻り値:
クラスローダotherがクラスローダclの祖先ならtrue

findLoadedClass

public static Class findLoadedClass(ClassLoader classLoader,
                                    String className)
指定のクラスローダまたはその祖先の暮らすローダが、 このバイナリ名を持つクラスの起動ローダとしてJava仮想マシンにより記録されていた場合は、 指定されたバイナリ名を持つクラスを返します。 記録されていなかった場合はnullを返します。

パラメータ:
classLoader - クラスローダ
className - クラスのバイナリ名
戻り値:
Classオブジェクト。クラスがロードされていない場合はnull
関連項目:
ClassLoader.findLoadedClass(String)

defineClass

public static Class defineClass(ClassLoader classLoader,
                                String className,
                                byte[] bytes,
                                int offset,
                                int length)
バイトの配列をClassクラスのインスタンスに変換します。

パラメータ:
classLoader - バイナリデータからClassクラスのインスタンスに変換するクラスローダ
className - クラスのバイナリ名
bytes - クラスデータを構成するバイト列
offset - クラスデータbytesの開始オフセット
length - クラスデータの長さ
戻り値:
指定されたクラスデータから作成されたClassオブジェクト
関連項目:
ClassLoader.defineClass(String, byte[], int, int)

definePackage

public static Package definePackage(ClassLoader classLoader,
                                    String name,
                                    String specTitle,
                                    String specVersion,
                                    String specVendor,
                                    String implTitle,
                                    String implVersion,
                                    String implVendor,
                                    URL sealBase)
指定のClassLoaderで名前を使ってパッケージを定義します。

パラメータ:
classLoader - パッケージを定義するクラスローダ
name - パッケージ名
specTitle - 仕様のタイトル
specVersion - 仕様のバージョン
specVendor - 仕様のベンダー
implTitle - 実装のタイトル
implVersion - 実装のバージョン
implVendor - 実装のベンダー
sealBase - nullでない場合、このパッケージは指定されたコードソースURLオブジェクトを考慮してシールされる。そうでない場合、パッケージはシールされない
戻り値:
新しく定義されたPackageオブジェクト
関連項目:
ClassLoader.definePackage(String, String, String, String, String, String, String, URL)

loadClass

public static Class loadClass(ClassLoader loader,
                              String className)
指定されたバイナリ名を持つクラスをロードします。

パラメータ:
loader - クラスローダ
className - クラスのバイナリ名
戻り値:
結果のClassオブジェクト
例外:
ClassNotFoundRuntimeException - クラスが見つからなかった場合
関連項目:
ClassLoader.loadClass(String)


Copyright © 2004-2007 The Seasar Foundation. All Rights Reserved.