2014-10-29 2 views
0

Мне сложно определить, как передать параметры командной строки через Java. Мой код Java должен вызывать двоичный файл, который, в свою очередь, выполняет некоторые инструкции. Команда Мне нужно передать этоИнструкции командной строки Linux от 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 вместо +, чтобы объединить строки. Каков правильный способ сделать это?

Спасибо за помощь.

+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(); 

Вам также нужно ловить исключения.

+0

Спасибо. Следующие действия выполнялись: 'Runtime.getRuntime(). Exec (" ./ program "+ nScen +" -r 1 ");' – ZzKr

Смежные вопросы