指定されたディレクトリにあるクラスを読み込む
プラグインとか、Webアプリ動的更新とか、ランチャーとか。
独自クラスローダはantとか、junitでも使っている上級者向け基本テクニックです。
/* * 作成日: 2005/04/30 */ package net.sourceforge.jssaver; import java.io.*; /** * 標準のクラスパスだけではなく、指定されたディレクトリを優先させて * クラスを探す。 * @author Asan */ public class SaverClassLoader extends ClassLoader { String paths; /** * @param paths 個々のパスには末尾にセパレータをつけないこと。 */ public SaverClassLoader(String paths) { this.paths = paths; } public Class findClass(String name) { byte b = loadClassData(name); if (b == null) return null; return defineClass(name, b, 0, b.length); } /** * 指定されたパスを使って、サーバのクラスを取得する. */ private byte loadClassData(String name) { // クラス名からファイル名を取得。 String fname = name.replace('.', File.separatorChar) + ".class"; // 個々のパスにファイルがあるかどうかを探す。 for (int i=0; i
スゴイことが簡単にできます。