Почему я не могу повторно выполнить программу 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 ответа
Решение
Вам нужно использовать addShutdownhook для прослушивания выхода из программы, и вы можете перезапустить вашу программу там.