2017-02-21 64 views
0

我试图在我的Spring应用程序中执行Runtime.exec(…)方法,然后总是从getInputStream()方法获得空结果。但是如果我作为一个核心Java应用程序执行,它运行良好。是否需要在Spring环境中执行其他任何实现?提前致谢。Runtime.exec()方法在Spring环境中总是返回空

  • 春季版本:4.2.1.RELEASE

  • 的commons-io的版本: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 '