【问题标题】:Runtime.getRuntime().exec returns empty stringRuntime.getRuntime().exec 返回空字符串
【发布时间】:2013-09-09 21:40:53
【问题描述】:

这是我使用的代码:

    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("cmd /C cd C:/Users/ASUS/Desktop/semantics/semantics/bin");
    process = runtime.exec("java test \"abc\" \"def\"");
    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line = "", tmp;

    while ((tmp = br.readLine()) != null) {
        line += tmp;
    }

    System.out.println(line);

我尝试使用诸如“cmd /C dir”之类的命令,得到了正确的返回值。

这是我的测试应用程序:

import semantics.Compare;
public class USAGE {
public static void main(String[] args) {        
String a = args[0];
String b = args[1];
Compare c = new Compare(a,b);
System.out.println(c.getResult());
}
}

【问题讨论】:

  • 您的test 应用程序是否将任何内容打印到标准输出?
  • 我编辑了我的问题,请重新检查。

标签: java command-line process inputstream runtime.exec


【解决方案1】:

要设置以 Runtime.exec 启动的进程的工作目录,请使用将 File 作为参数之一的版本。

工作目录是进程私有的,不能通过在不同进程中运行“cd”命令来更改。

【讨论】:

  • 可以传null,表示子进程会继承当前进程的环境。不过,您可能会发现 ProcessBuilder 类更易于使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2015-08-28
  • 2011-01-07
  • 2012-06-21
  • 2020-01-27
相关资源
最近更新 更多