Запуск 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 в логе?


Ответы (0 шт):