2

Java コンソール アプリケーションを再起動する方法を教えてください。

呼び出されたときにコンソール アプリケーションを再起動または再起動するメソッドを作成したいと考えています。どうすればそれを行うことができるか、いくつかのアイデアを教えてもらえますか?

4

3 に答える 3

3

main(args)渡して電話をかけてみましたかString[] args

本当にrestart()メソッドが必要な場合は、次のようなことができます

private void restart(String[] strArr)
{
    main(strArr);
}

原油のミニ例

import java.io.*;
public class Test{

   public static void main(String[] args)
   {
        try{
            System.out.println("Type 'R' to restart");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String input = br.readLine();
            if(input.equals("R"))
                restart(args);
            else
                System.out.println("You did not restart");
        }
        catch(Exception e)
            {e.printStackTrace();}

    }

    private static void restart(String[] strArr)
    {
        System.out.println("You restarted");
        main(strArr);
    }

}
于 2013-07-04T01:56:40.997 に答える
2

Java だけを使用してそれを行う方法は考えられません。スクリプトの助けが必要になるでしょう。System.exit() で JVM の実行を終了し、終了ではなく再起動する必要があるかどうかを呼び出し元に知らせる特別な値を使用して、再起動できます。したがって、Java コードでは次のようになります。

public class Test {

    public static final int RESTART_CODE = 100;

    public static void main(String ... args) throws IOException {

        // DO something...

        restart();
    }

    static void restart() {
        System.exit(RESTART_CODE);
    }
}

次に、JVM を呼び出すスクリプト (この場合は Linux bash スクリプトです。Windows を使用している場合は、*.bat ファイルで同様のことができます)。ティー スクリプト:

#!/bin/bash

java Test "$@"
[ $? == 100 ] && ./test.sh "$@"

次に、プログラムを呼び出すことができます

java.sh _argument1_ _argument2_ ...
于 2013-07-04T01:17:21.550 に答える
0

理論的には、Runtime.exec() を呼び出し、コマンドを渡して Java コンソール アプリを実行できるはずです。

念のため、Runtime.exec() を呼び出す前に、すべてのデータを保存するか、アプリケーションを終了できる状態にする必要があります。Runtime.exec() はコンソール アプリの別のインスタンスを実行するため、新しいインスタンスはすべてのデータをロードしている可能性があります。

Runtime.exec() が正常に呼び出された後、既存のアプリは平和的に終了します。

私の懸念は、既存のアプリが終了したときに新しいインスタンスが強制終了されるかどうかです。

于 2013-07-04T05:01:21.693 に答える