libディレクトリ内の全jarファイルをクラスパスに
バッチプログラムやスタンドアローンなGUIアプリケーションでは,プログラムを起動するためのスクリプトを準備することがほとんどである。最近のJavaプログラムでは,数多くのOSSを使用して作成するために,クラスパスに通さなくてはいけないjarファイルの数は,それはそれは多くなる。シェルスクリプトやバッチプログラム内で,jarファイルを個々に記述してクラスパス文字列を構築するのは,非常にうっとおしく,美しくない。 せっかくのスクリプトなので,libディレクトリ内にあるjaファイル全てのパスを連結して,-classpath オプションに渡すことが可能な文字列を動的生成するコードを紹介してみる。 まずはシェルスクリプト版(これは他人作)。BASE_DIRはlibディレクトリの親ディレクトリのパス。CLASS_PATH変数に結果が入る。
for JAR_FILE in
/bin/ls $BASE_DIR/lib
do CLASS_PATH=”$CLASS_PATH:$BASE_DIR/lib/$JAR_FILE” done
次はVBScript版(これは自作)。baseDirはlibディレクトリの親ディレクトリのパス。上記と同じくCLASS_PATH変数に結果が入る。
Set fso = Wscript.CreateObject(“Scripting.FileSystemObject”) Set libDir = fso.GetFolder(baseDir & “¥lib”) For Each file In libDir.Files CLASS_PATH = CLASS_PATH & file.Name & “;” Next CLASS_PATH = Left(CLASS_PATH, Len(CLASS_PATH) - 1)
最後の1文は,余計な「;」記号を除去するコードである。 ホントはDOSのバッチプログラムでも同じような処理を書こうとしたけど,DOSは無知なので即効挫折。ま,最近はWSH全盛だろうと勝手に決めつけ,VBScriptで作ってみた。 もしこのようなことでお悩みの方は,参考になれば幸いである。