У меня есть Java-приложение, которое, например, нуждается в перезапуске (но также и для запуска других процессов).В настоящее время это выполняется путем закрытия текущего приложения, а затем запуска нового экземпляра с использованием ShutdownHook и ProcessBuilder.
Моя проблема заключается в том, что новый процесс выполняется где-то в фоновом режиме и не имеет собственного окна консоли.На компьютерах с Windows новое консольное окно может быть создано с использованием
cmd /c start "windowtitle" java -jar myApp.jar
, но при этом создаются 2 процесса: процесс cmd и процесс java, запущенные командой start.Это, например, делает невозможным получение stdout и stderr запущенного процесса, потому что мы получаем эти потоки только для процесса cmd, а не для потока, запущенного командой start.
Самое лучшее решениедля меня было бы повторно использовать текущее окно консоли для нового процесса, но это кажется каким-то невозможным, поскольку я не нашел никакой информации о том, как это сделать.Кроме того, я был бы признателен за решение, которое работает на машинах Unix.