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

Java実行時に-cp引数を2回使用できますか? - TechRepublic
  • 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などのコマンドラインの「マジック」は、結果のコードが簡単に読める限り、何でも構いません。

Tagged: