-
Javaを実行するときに-cp引数を2回使用できますか
多くの依存関係を持つJavaアプリケーションを実行しようとしています。以前は、以下のコマンドでアプリケーションを起動していました。
java -cp “program.jar:jar1.jar:jar2.jar:jar3.jar:[…]” program
ただし、依存関係のリストが長くなったため、それらを引数ファイルに移動しました。このファイルの内容は次のとおりです。-cp “\
program.jar:\
jar1.jar:\
jar2.jar:\
jar3.jar:\
[…]”
そして、アプリケーションを次のように実行します。java @arguments-file プログラム
ここまではすべて正常に動作します。場合によっては、program.jar のベータ バージョンが作成されることがあります。これらのバージョンは同じ依存関係をすべて共有しますが、program.jar の名前は program-beta.jar に変更されます。
jarを実行するには次のコマンドを使用します。
java -cp “program-beta.jar:jar1.jar:jar2.jar:jar3.jar:[…]” プログラム、
またはより具体的には、環境変数を使用して同じスクリプトを使用できるようにします。変数は状況に応じてprogram.jarまたはprogram-beta.jarのいずれかに設定されます。java -cp “$PROGRAM_JAR:jar1.jar:jar2.jar:jar3.jar:[…]” program
引数ファイルを使用するようになったので、次のようなことができるようになることを期待しています。java -cp “$PROGRAM_JAR” @arguments-file program
ただし、-cp を 2 回使用すると、2 つのうち 1 つが無視され、java.lang.ClassNotFoundException 例外が発生します。この問題を回避する方法があり、名前で 1 つの jar ファイルを指定し、他のすべてのファイルを抽象化して、Java コマンドが何千文字にもならないようにすることはできますか?
これは完全にLinux上で実行されるため、grepなどのコマンドラインの「マジック」は、結果のコードが簡単に読める限り、何でも構いません。
Java実行時に-cp引数を2回使用できますか? - TechRepublic

Java実行時に-cp引数を2回使用できますか? - TechRepublic