2014-10-29 177 views
0

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

./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而不是+来合并字符串等其他内容。 这样做的正确方法是什么?

感谢您的帮助。

+2

不要使用'Runtime.exec()',而是使用'ProcessBuilder'! – fge 2014-10-29 15:05:08

+0

'String.valueOf(nScen)','-r'和'1'可能应该在数组的不同元素中。 (但请按照@ fge的建议。) – Biffen 2014-10-29 15:07:48

+0

您不必逃避常规/,您只需要避免像\\那样的反斜杠。 – 2014-10-29 15:14:32

回答

0

你可以这样做:

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

您还需要捕获异常。

+0

谢谢。以下工作:'Runtime.getRuntime()。exec(“./ program”+ nScen +“-r 1”);'' – ZzKr 2014-10-29 15:16:50