org.seasar.util.lang
クラス ClassLoaderUtil

java.lang.Object
  上位を拡張 org.seasar.util.lang.ClassLoaderUtil

public abstract class ClassLoaderUtil
extends Object

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

作成者:
koichik

コンストラクタの概要
ClassLoaderUtil()
           
 
メソッドの概要
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<URL> getResources(Class<?> targetClass, String name)
          getClassLoader(Class)が返すクラスローダから指定された名前を持つすべてのリソースを探します。
static Iterator<URL> getResources(ClassLoader loader, String name)
          指定のクラスローダから指定された名前を持つすべてのリソースを探します。
static Iterator<URL> 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
 

コンストラクタの詳細

ClassLoaderUtil

public ClassLoaderUtil()
メソッドの詳細

getClassLoader

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

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

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

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

パラメータ:
targetClass - ターゲット・クラス。nullであってはいけません
戻り値:
クラスローダ
例外:
IllegalStateException - クラスローダを取得できなかった場合

isAncestor

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

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

getResources

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

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

getResources

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

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

getResources

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

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

findLoadedClass

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

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

defineClass

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

パラメータ:
classLoader - バイナリデータからClassクラスのインスタンスに変換するクラスローダ。 nullであってはいけません
className - クラスのバイナリ名。nullや空文字列であってはいけません
bytes - クラスデータを構成するバイト列。nullや空配列であってはいけません
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 - パッケージを定義するクラスローダ。nullであってはいけません
name - パッケージ名。nullや空文字列であってはいけません
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 - クラスローダ。nullであってはいけません
className - クラスのバイナリ名。nullや空文字列であってはいけません
戻り値:
結果のClassオブジェクト
例外:
ClassNotFoundRuntimeException - クラスが見つからなかった場合
関連項目:
ClassLoader.loadClass(String)


Copyright © 2010-2012 The Seasar Foundation. All Rights Reserved.