どのようにJavaのjarファイルを実行し、シェルスクリプト変数で出力を保存取得します

プリタムクマール:

私は3つの方法を持っているJavaクラスを有し、各メソッドは、文字列を返します。私は、エクスポートされ.jarているJavaプロジェクトの外にファイルを。私は、コマンド./script1.shを使用してgitのバストからjarファイルを実行すると、私は、コマンドウィンドウに出力を得ます。私の質問は、私はscript1.shファイル内にある3つの可変にそれらの値を割り当てることができる方法、です。私はエコー$ {「Source_branchを」}と入力した場合、私は「XXX_Source_Branch」として出力を取得する必要があります。ここに私のJavaコードは次のとおりです。

package com.main;

public class Engine {

    public static void main(String[] args) {
        try {
         getSourceBranch();
         getDestinationBranch();
         getDestEnv();
        } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
    }

    public static String getSourceBranch() {
        return "XXX_Source_Branch";
    }

    public static String getDestinationBranch() {
        return "XXX_Dest_Branch";
    }

    public static String getDestEnv() {
        return "XXX_Dest_Env";
    }
}

jarファイルの名前ですEngine.jarそして、私のスクリプトファイルがあります

runjar.sh

ます。java -jar Engine.jar Source_branch Destination_brnach Destination_env

Dnlst:

bashのためにJavaからデータを渡します

あなたがオーバーレイStringにJavaからのデータを保存したい場合は、にそれを印刷する必要がありますSystem.outし、シェルからそれらを読んで。

Javaコード:

System.out.println("your source branch")
System.out.println("your destination branch")

シェルコード

out="$(java -jar Engine.jar)"
sBranch="$(echo "$out"|sed -n '1p' /dev/stdin)"
destBranch="$(echo "$out"|sed -n '2p' /dev/stdin)"

bashのからJavaへデータを渡します

あなたはハードコード文字列ならば、Javaは単なる文字列を使用します。あなたはそれを変更したい場合は、Javaコードを変更する必要があります。

オプション1 - 引数

あなたが使用して、スクリプト内の文字列を渡したい場合java -jar Engine.jar Source_branch Destination_brnach Destination_env、あなたはあなたにそれらを使用することができますmain持つメソッドargsのパラメータ。

たとえば、あなたが使用してmainメソッドの最初の文字列を印刷することができます

System.out.println(args[0]);

あなたがそれを行う場合は、してくださいテスト場合はargs.length、あなたがアクセスしている最高の引数よりも大きいです。

オプション2 - [システムのプロパティ]

あなたは引数(あなたのメインメソッドの独立した)にアクセスせずにパラメータを取得したい場合は、システムのプロパティを使用する必要があります。

最初は、そのようにするスクリプトを変更します。

java -jar -DSource_branch=yourSourceBranch -DDestination_branch=yourDestinationBranch -DDestination_env=yourDestinationEnv

Engine.jar

なお-Dつまり、システムのプロパティを渡していることを示しています。これの構文は次のとおりです。-D<key>=<value>そしてそれが間に位置しなければならないjava-jar

また、あなたが使用する必要がありますSystem.getProperty()あなたのコード内のどこからでもアクセスすること。

例えば:

public static String getSourceBranch() {
    return System.getProperty("Source_Branch");
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=31578&siteId=1