Как запустить скрипт из Java - PullRequest
1 голос
/ 07 февраля 2012

У меня есть скрипт test.sh в Ubuntu.Я хочу запустить его с Java.Я знаю, что должен использовать Runtime.getRuntime().exec();

Разве мне не нужно указывать в скобках exec местоположение test.sh?Я набираю /home/main/ss/test.sh

Я не получаю никаких сообщений об ошибках, но когда я искал папку, я увидел, что скрипт не работает.Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Вам действительно стоит взглянуть на Process Builder . Он действительно создан для такого рода вещей.

 ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();
0 голосов
/ 07 февраля 2012

Исходя из вашего описания, вы пришли к выводу, что скрипт не работал:

Я не получаю никаких сообщений об ошибках, но когда я искал папку, я увидел, что скрипт не работает.Как я могу это исправить?

Я пришел к выводу, что сценарий создает новый файл, а его нет после запуска из Java.

Возможно, вы предполагаете, что вывод сценария, если он будет отправлен в текущий каталог, закончится в каталоге сценария, а не в каталоге, в котором вы запустили свое Java-приложение.

Это может быть рабочий стол, если вы начинаете свой класс из пользовательского интерфейса с Icon в качестве начального, это может быть каталог вашего дома или проекта, если вы компилируете класс вручную или каталог, созданный вашей IDE, если вы разрабатываетес затмением или тому подобное.

Если ваш сценарий пишет по абсолютному пути, например /tmp/script.out, вы можете быстро проверить, может ли это быть вашей проблемой.

0 голосов
/ 07 февраля 2012

Вы пытались вызвать свой скрипт напрямую или указали оболочку для использования? Возможно, вам потребуется указать оболочку в вашем вызове exec, если она не указана (и не обработана) в первой строке скрипта.

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