指定されたディレクトリにあるクラスを読み込む

プラグインとか、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

スゴイことが簡単にできます。