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で作ってみた。 もしこのようなことでお悩みの方は,参考になれば幸いである。

このエントリーをはてなブックマークに追加

関連記事

40%キーボードに慣れるためにやったこと

Lunakey PicoでQMK Firmwareを動かしてみました

Googleアシスタント向け会話型アクションが1年後にシャットダウンされます

Google I/O 2022でのGoogleアシスタント関連のセッション

Remap Organizations feature has been released