2017-02-21 39 views
0

Я попытался выполнить метод Runtime.exec(…) в моем приложении Spring, а затем всегда получаю пустой результат из метода getInputStream(). Но он работает хорошо, если я выполняю роль основного приложения Java. Являются ли какие-либо другие реализации, необходимые для выполнения в среде Spring? Заранее спасибо.Метод Runtime.exec() всегда возвращает пустое значение в среде Spring

  • Spring Версия: 4.2.1.RELEASE

  • Обще-ю Версия: 2.4

    try { 
        Process p = Runtime.getRuntime().exec(new String[] {"sh", "-c", "spamc < abcd.txt"}); 
        String spamResponsexx = IOUtils.toString(p.getInputStream()); 
        log.debug("Spam Response : " + spamResponsexx); 
    } catch (Exception e) { 
        e.printStackTrace(); 
        log.error("", e); 
    } 
    
+2

Вы также должны смотреть на поток ошибок ('p.getErrorStream()'), может быть сообщение в этом потоке. –

+0

Маловероятно, что весна имеет какое-либо отношение к вашей воспринимаемой проблеме. – Magnus

+0

Возможно, текущий каталог отличается, поэтому 'abcd.txt' не найден (или другой файл с именем' abcd.txt') ... – Holger

ответ

0

Может быть привилегии пользователя вопросы. Я также работал в аналогичном сценарии.

  1. В этом случае обе службы должны выполняться тем же пользователем (XYZ)
  2. В противном случае «» spamc файлы библиотек место должно быть точкой для вашего пользователя (XYZ) HOME путь «.bashrc» и сброс».bashrc '