コマンドラインから実行する Javaプログラムを開発し、いざ実行しようしました。
いろいろなライブラリを使用しているため、実行時には多数の jarファイルをクラスパスに設定しなければなりません。
それも面倒なので、1つのディレクトリにjarファイルをまとめておき、そのディレクトリをクラスパスに設定しよう...
しかし、このくらいのこと普通にできそうなものですが、できないんですね...
クラスパスに jarファイルもディレクトリも指定することはできるのですが、jarファイルの入ったディレクトリを指定しても、その下にある jarファイルがすべてクラスパスに設定されるわけではないんです...
jarファイルをワイルドカードで指定することもできないようです。
多数の jarファイルをクラスパスに一括設定するには、スクリプトなどの機能を利用するしかなさそうです。
例えば、Windows の DOSプロンプトから実行する場合、以下のようにバッチファイルの中で for文を使えば指定したディレクトリ内にあるすべての jarファイルを順次クラスパスに設定することができます。
cho off set MY_CLASS_PATH=.\jar\myapplication.jar for %%i in (.\lib\*.jar) do call :setclasspath %%i goto :execute :setclasspath set MY_CLASS_PATH=%MY_CLASS_PATH%;%1 goto :EOF :execute "%JAVA_HOME%\bin\java.exe" -cp %MY_CLASS_PATH% MyApplication %1 %2 %3
※for文のうしろに do set MY_CLASS_PATH=...と書いてもうまく動かないようなので、:setclasspathというラベルに飛ばしています。