java.net.URLClassLoader

目的
指定されたURLからクラスのロードを行う。

関連クラス

今回のソース
////////////////////  Main.java  ////////////////////

import java.net.*;

class Main
{
	public static void main(String args[])
	{
		try
		{
			// 引数をクラスパスとして追加
			URL[] urls = new URL[args.length];
			for(int i=0; i<urls.length; i++)
			{
				urls[i] = new URL(args[i]);
			}

			URLClassLoader loader = new URLClassLoader(urls);
			Class test_class = loader.loadClass("TestClass");

			Object instance = test_class.newInstance();
			System.out.println(instance);
		}
		catch(Exception ex)
		{
			// エラー処理は省略(^^;
			ex.printStackTrace();
		}
	}
}

////////////////////////////////////////////////////////////

////////////////////  TestClass.java  ////////////////////

public class TestClass
{
	public String toString()
	{
		return("This is TestClass.");
	}
}

////////////////////////////////////////////////////////////
Source is here. (ZIP Format, 1186Byte, Shift-JIS)

コンパイル&実行
javac Main.java

// URLClassLoaderを使ったバージョン
java Main http://w33.mtci.ne.jp/~shige1/jclass/archive/test.jar

// Class-Pathヘッダを使ったバージョン
java -jar test2.jar

説明
(概略)

プログラム中で指定したURLから、静的にクラスのロードを行います。
当然、プログラムの組み方によっては、動的に行うことも可能です。

注意すべきことは、ロードされるクラスは、publicでなければならないということです。
publicでない場合は、クラスにアクセスすることが出来ずに、
IllegalAccessExceptionを発生させることになります。

他の動的にクラスのロードを行う方法として、
jarアーカイブ中のmanifestファイルに、Class-Pathヘッダとして記述する方法もあります。
こちらの方法は簡単で、ただ、
Class-Path: <パス>, <パス>, ...
という形式で、manifestファイルに記述するだけです。