Запустите скрипт оболочки с командами Angular CLI из Java - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь запустить скрипт оболочки из Java (используя Runtime.getRuntime (). Exec (cmd)).Кажется, что все команды в файле сценария работают нормально, кроме команд angular-cli (ng).

Мой файл Java:

System.out.println("Executing Script...");
final String[] cmd = new String[]{"/bin/bash", "test.sh"};
final Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
while ((s = reader.readLine()) != null) {
    System.out.println("Script output: " + s);
}
process.destroy();
System.out.println("Script Executed.");

test.sh:

#!/bin/bash
cd ~/ && 
ng new newAngularProject &&

Outout:

Executing Script...
Script Executed.

Нет ошибок.Все остальные команды работают, но по какой-то причине я не могу запустить команды ng.Кроме того, я протестировал файл без запуска из Java - когда я запускаю тот же сценарий непосредственно на консоли, он работает отлично, и все команды (включая команды ng) работают аккуратно.Я работаю на MacOS на случай, если вы захотите узнать.

1 Ответ

0 голосов
/ 11 июня 2018

Также выведите поток ошибок.Вы получите сообщение об ошибке, если оно есть.

    final BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    while ((s = errorReader.readLine()) != null) {
        System.out.println("error: " + s);
    }

Также вы можете попробовать использовать абсолютный путь ng в вашем test.sh, например, / home / my / install / node-vxxx /ng, так как процесс, порожденный Java для запуска вашей команды, может не получить переменную окружения, которую вы установили в .bashrc /.bash_aliases

...