2014-10-29 2 views
0

Java를 통해 명령 행 옵션을 전달하는 방법을 이해하는 데 어려움을 겪고 있습니다. Java 코드가 바이너리 파일을 호출해야하는데,이 바이너리 파일은 다시 몇 가지 지침을 실행합니다. 내가 통과해야 할 명령은Java의 Linux 명령 행 명령

./program 100 -r 1 

지금이 내가 실행하면 방법은, 내 자바 코드에서 옵션 -r 1. 을 통과 할 수있다 :

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

+0

'String.valueOf (nScen)','-r'과'1'은 아마 배열의 분리 된 요소에 있어야합니다. (그러나 @ fge의 조언을 따르십시오.) – Biffen

+0

일반 /을 이스케이프 할 필요는 없습니다. \\와 같은 백 슬래시 만 이스케이프해야합니다. –

답변

0

이 작업을 수행 할 수 있습니다 :

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

은 또한 예외를 catch해야합니다.

+0

감사합니다. 다음은 작동했다 :'Runtime.getRuntime(). exec ("./ program"+ nScen + "-r 1");' – ZzKr