2014-10-29 142 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