-2

メッセージを複数回印刷する必要があると思いましたが、1回だけですか? どうしたの?ありがとう。

import java.io.IOException;

public class RestartApplication {

    public static void main(String[] args) {       
        System.out.println("Test restarting the application!");       
        restart();
    }

    private static void restart() {
        try{
            Runtime.getRuntime().exec("java RestartApplication");
        }catch(IOException ie){
                   ie.printStackTrace();
        }
    }   
}
4

2 に答える 2

2

一度だけ印刷する理由は、プロセスからの出力を印刷する必要があるためです。そうしないと、サイレントに実行されます。

Process process = Runtime.getRuntime().exec("java RestartApplication no-run");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
   System.out.println(line);
}

出力が表示されると、プロセスのチェーンが表示され、それぞれが新しいコピーを開始して多くのリソースを消費するため、別のプロセスを開始しないRestartApplicationようにコマンドライン引数を渡すことを検討することをお勧めします。

単純な引数チェックでも、プロセス数を 2 に制限することでシステムを節約できます。

if (args.length == 0) {
   restart();
}
于 2012-11-03T17:51:12.270 に答える
1

これを実行してもコマンドラインでは機能しないと思われるため、Java から実行しても機能しません。

System.out.println("Test restarting the application!");
Process exec = Runtime.getRuntime().exec(new String[]{"java", "-cp", System.getProperty("java.class.path"), "RestartApplication"});
BufferedReader br = new BufferedReader(new InputStreamReader(exec.getInputStream()));
for (String line; (line = br.readLine()) != null; )
    System.out.println(line);

版画

Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
Test restarting the application!
于 2012-11-03T17:46:08.793 に答える