Запуск java приложения из angular сервиса
Есть приложение Angular v12 обернутое в Electron, на старте оно должно запустить модуль на java и дождаться вывода Application started для инициализации app.component (дело происходит в BootstrapService). При этом запущенное java приложение, это ясное дело не скрипт, и до конца не выполнится, и результат выполнения не вернет. Я пытаюсь использовать window.require('child_process') для этого:
private execute(command: string): Promise<string> {
return new Promise<string>(
(resolve) => {
this.childProcess
.exec(command, (error, stdout, _) =>
error ? resolve(error.message) : resolve(stdout));
});
}
Обычные "конечные" скрипты execute нормально выполняет.
Проблема тут:
public run(): Promise<boolean> {
return this.execute('java --version')
.then((stdout) => {
if (stdout.includes('java')) {
this.execute('java -jar app.jar').then();
return new Promise<boolean>((resolve) => resolve(true));
} else {
window.alert('Critical ERROR Java v11 required');
return new Promise<boolean>((resolve) => resolve(false));
}
});
}
С командой java -jar app.jar метод execute(command: string): Promise<string> работает бесконечно, так как выполнение java -jar app.jar не когда не заканчивается. Как мне дождаться вывод по момента появления ключевых Application started слов и только тогда вызвать resolve(true) или resolve(false) по таймауту или найдя Application fail в логе?