Я согласен с тем, что слияние с bootclasspath - плохая идея. Но ...
Получите код для "java.c" - программы на C, которая компилируется в java.exe. Вы обнаружите, что он просто использует API вызова JNI для создания JVM и вызова метода main. Вы можете изменить и заново скомпилировать это, чтобы найти определенные коды выхода и т. Д., А затем обойти и перезапустить JVM, если потребуется.
В качестве альтернативы Eclipse делает это (или, по крайней мере, раньше), но с помощью одной Java-программы создает командную строку (из файла props и т. Д.) И запускает подпроцесс. Опять же, он перехватил код завершения подпроцесса и использовал его, чтобы решить, стоит ли перезапускать новый подпроцесс.