[Java] 多数の jarファイルをクラスパスに一括設定する。 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

コマンドラインから実行する 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というラベルに飛ばしています。