Runtime.exec()方法在Spring环境中总是返回空
问题描述:
我试图在我的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); }
答
也许用户权限的问题。我也在类似的情况下工作。
- 在这种情况下,这两种服务应该运行为相同的用户(XYZ)
- 否则“spamc”库文件的位置应该是指向你的用户(XYZ)HOME路径“的.bashrc”和复位”的.bashrc '
您还应该查看错误流('p.getErrorStream()'),那么在该流上可能会有消息。 –
春天不太可能与你感知到的问题有任何关系。 – Magnus
也许,当前目录是不同的,因此找不到'abcd.txt'(或者一个名为'abcd.txt'的不同文件)... – Holger