【问题标题】:Linux command line instructions from Java来自 Java 的 Linux 命令行指令
【发布时间】:2014-10-29 15:03:51
【问题描述】:

我很难弄清楚如何通过 Java 传递命令行选项。 我的 Java 代码需要调用一个二进制文件,该文件又运行一些指令。 我需要传递的命令是

./program 100 -r 1

现在没有办法可以通过选项 -r 1。 在我的 Java 代码中,如果我运行:

  command=new String [2];
  command[0] = ".//program";
  command[1] = " "+String.valueOf(nScen);
  Process p = Runtime.getRuntime().exec(command);

一切正常,程序运行正常。 nScen 是一个整数。 但是,如果我尝试

  command=new String [3];
  command[0] = ".//program";
  command[1] = " "+String.valueOf(nScen);
  command[2] = " -r 1";
  Process p = Runtime.getRuntime().exec(command);

  command=new String [2];
  command[0] = ".//program";
  command[1] = " "+String.valueOf(nScen)+" -r 1";
  Process p = Runtime.getRuntime().exec(command);

程序没有运行。我尝试了其他方法,例如使用 .concat 而不是 + 来合并字符串。 这样做的正确方法是什么?

感谢您的帮助。

【问题讨论】:

  • 不要使用Runtime.exec(),而是使用ProcessBuilder
  • String.valueOf(nScen)-r1 可能应该在数组中的不同元素中。 (但请遵循@fge 的建议。)
  • 你不必转义一个常规的 /,你只需要转义像 \\ 这样的反斜杠。

标签: java linux bash command-line binaryfiles


【解决方案1】:

你可以这样做:

Process proc = Runtime.getRuntime().exec("./program  " + nScen + " -r 1");
int exitVal = proc.waitFor();

您还需要捕获异常。

【讨论】:

  • 谢谢。以下工作:Runtime.getRuntime().exec("./program "+nScen+" -r 1");
猜你喜欢
  • 2015-09-05
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多