Java CLASSPATHを作成するためのBATファイル


4 Answers

なぜあなたはfindを使うでしょうか? おそらく、あなたのjarファイルが必要とするすべてのライブラリを前もって知っているでしょう。

代わりに、常に-Djava.ext.dirs=libを使用して、すべての方法でそれを拾うことができます。

Question

私はWindowsでJavaで書かれたコマンドラインアプリケーションを配布したい。

私のアプリケーションはzipファイルとして配布されています。これには、メインディレクトリを呼び出すために必要な.jarファイルを持つlibディレクトリエントリがあります。 現在、Unix環境では、libディレクトリにすべてのファイルを追加することによって作成されたCLASSPATHでjavaコマンドを呼び出すシェルスクリプトがあります。

どのように私は同様の機能を持つ.BATファイルを書くのですか? Windowsの世界でfind unixコマンドと同等のものは何ですか?




物をポータブルにするオプションは、クラスパスをバッチファイルそのものの相対位置に設定することです。

Windowsの場合(Java 6以降、./binのクラス、./libのjarファイル)

@java -classpath %~dp0/bin;%~dp0/lib/* ClassName %1



SET CLASSPATH=""
FOR /R /lib %%a in (*.jar) DO CALL :AddToPath %%a
echo %CLASSPATH%

java -cp %CLASSPATH% com.a.b.MyClass

pause

:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF



スクリプト外でCLASSPATH設定を保持し、/ Vを使用してシェルを起動しなかった場合のバリエーションは、次のようにすることができます。

@echo off
FOR /R ./lib %%a in (*.jar) DO CALL :AddToPath %%a
ECHO %CLASSPATH%
GOTO :EOF

:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF

コマンドラインで遊んでいるときに環境を設定するのに便利です。




Mavenを使用してプロジェクトをビルドする場合、少し違った方法があります。 アプリケーションアセンブラMaven Pluginは、Javaアプリケーションランチャを作成するためのものです。 このプラグインは、あなたのためにbatファイルランチャーを生成し、指定されたフォルダに依存関係を置きます。 必要に応じて、ランチャーはあなたをサービス\デーモンとして登録することができます。

これはその使用に関する話題です

このプラグインはプロジェクトのCM部分をDRYに保つのに役立ちます。




Related