Скрипт оболочки не запускается из Java-программы - PullRequest
0 голосов
/ 26 октября 2011

Есть две вещи, которые нужно отметить сразу же ...

  1. Сценарий оболочки работает нормально вручную
  2. Простой сценарий оболочки (echo hello), который я написал, прекрасно работает через java

Итак, у меня есть сценарий оболочки, который я пытаюсь запустить через процесс Java.

File sqlF = new File("path to deploy script");

Process proc = rt.exec(sqlF + "/deploy.sh");
proc.waitFor();

System.out.println(proc.exitValue());

Когда я запускаю этот код, я получаю неоднозначное возвращаемое значение «1».

Вот сценарий оболочки (потому что я думаю, что проблема может возникнуть отсюда):

#!/bin/bash
mysql -u XXXX -h XXXXX < XXXXX.sql
mysql -u XXXX -h XXXXX database < DEPLOY-HELPER.sql

Есть идеи, почему это не будет работать должным образом с Java?

1 Ответ

0 голосов
/ 26 октября 2011

Если вы хотите запустить скрипт оболочки, вы должны явно вызвать оболочку и передать ей имя скрипта в качестве аргумента, как в

bash /path/to/script/deploy.sh

Ни Runtime.exec(), ни ProcessBuilder не знают, как выполнять сценарии оболочки самостоятельно, они знают только, как выполнять двоичные исполняемые файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...