2016-03-01 6 views
0

У меня есть sendmail файл, содержащий этот скрипт echo "sample message" | /usr/bin/swaks --to [email protected] я хочу, чтобы запустить его с Java, используя этот код:Выполнить сценарий оболочки из Java

ProcessBuilder pb = new ProcessBuilder("sendmail"); 
Process p = pb.start() 

, но электронная почта не отправляется. Что не так и как я могу это исправить?

редактировать: бег ./sendmail работает, и электронная почта отправляется на мою почту

+1

ли выполняет эту команду от линии работы команды должным образом на том же компьютере? – Cripto

+0

@Cripto я запускаю его с помощью './Sendmail', и письмо отправляется на мою почту – Mirza

ответ

1

Я думаю, что проблема в том, что ваше приложение Java заканчивается прежде, чем заканчивается сценарий.

Попробуйте это:

ProcessBuilder pb = new ProcessBuilder("./sendmail.sh"); 
    Process p = pb.start(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    String readline; 
    int i = 0; 
    while ((readline = reader.readLine()) != null) { 
     System.out.println(++i + " " + readline); 
    } 

Приведенный выше код должен напечатать, что ваши команды отпечатки, которые могли бы помочь вам отлаживать. Он также имеет побочный эффект блокировки до завершения скрипта.

Если это работает, и вы не заботитесь о выходе, вы можете сделать это:

ProcessBuilder pb = new ProcessBuilder("./test.sh"); 
    Process p = pb.start(); 
    p.waitFor(); 
+0

ok спасибо, я попробую его позже, у меня есть некоторая ошибка, теперь другая причина. обновит его, если он сработает – Mirza

+0

. Я не знаю, почему, но в моем проекте это не работает, но я попытался создать новый java-файл и попробовал его работу. теперь я застрял, почему в моем проекте не работает – Mirza

+0

Хм, можете ли вы поделиться своим проектом через github? Я могу взглянуть на это? – Cripto

Смежные вопросы