Runtime.exec()方法在Spring环境中始终返回空

Runtime.exec()方法在Spring环境中始终返回空,spring,spring-mvc,java-8,apache-commons,Spring,Spring Mvc,Java 8,Apache Commons,我尝试在Spring应用程序中执行Runtime.exec(…)方法,然后总是从getInputStream()方法获得空结果。但是,如果我作为一个核心java应用程序执行,那么它工作得很好。是否需要在Spring环境中执行其他实现?提前谢谢 Spring版本:4.2.1.0版本 commons io版本:2.4 try { Process p = Runtime.getRuntime().exec(new String[] {"sh", "-c", "spamc < abcd.

我尝试在Spring应用程序中执行
Runtime.exec(…)
方法,然后总是从
getInputStream()
方法获得空结果。但是,如果我作为一个核心java应用程序执行,那么它工作得很好。是否需要在Spring环境中执行其他实现?提前谢谢

  • Spring版本:4.2.1.0版本

  • 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);
    }
    
    试试看{
    进程p=Runtime.getRuntime().exec(新字符串[]{“sh”、“-c”、“spamc

    • 可能是用户权限问题。我也在类似的场景中工作过

    • 在这种情况下,两个服务应作为同一用户(XYZ)运行
    • 否则,“spamc”库文件位置应指向您的用户(XYZ)主路径“.bashrc”和重置“.bashrc”

    • 您还应该查看错误流(
      p.getErrorStream()
      ),该流上可能有一条消息。spring不太可能与您感知到的问题有关。可能当前目录不同,因此找不到
      abcd.txt
      (或另一个名为
      abcd.txt
      )的文件…