Почему я не могу повторно выполнить программу Java из блока исключений?

Я пытаюсь запустить следующий код Java, который должен автоматически перезапускаться, когда я убиваю его через CTRL + C в командной строке Windows:

import java.net.*;
import java.io.*;

public class LineRunner extends Thread {

    public static void main(String[] args) throws InterruptedException, IOException{

        try {

          for (int i = 0; i<10000000; i++) {
          Thread.sleep(200);
          System.out.print("hithe");
        }
        }
        catch(  InterruptedException ioex) {

             String[] command = {"C://Program Files//Java//jdk1.7.0_02//bin//java.exe", "LineRunner"};  
             ProcessBuilder pb = new ProcessBuilder(command);
             pb.redirectErrorStream(true);
             Process exec = pb.start();

             BufferedReader br = new BufferedReader(new InputStreamReader(exec.getInputStream()));
             String text = null;
             while ((text = br.readLine()) != null) {
                 System.out.println(text);
             }

             System.out.println("Process exited with " + exec.waitFor());

        }
    }
}

Но когда я убиваю из командной строки (через CTRL + C), это не перезапускает программу, как я хочу.

Любые советы приветствуются, спасибо

2 ответа

Решение

Ctrl-C выйдет из JVM, как уже обсуждалось в комментариях.

Вам нужно использовать addShutdownhook для прослушивания выхода из программы, и вы можете перезапустить вашу программу там.

Другие вопросы по тегам