Мне сложно определить, как передать параметры командной строки через 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
вместо +
, чтобы объединить строки. Каков правильный способ сделать это?
Спасибо за помощь.
Не используйте 'Runtime.exec()', вместо этого используйте 'ProcessBuilder'! – fge
'String.valueOf (nScen)', '-r' и' 1', вероятно, должны быть в отдельных элементах массива. (Но следуйте советам @ fge.) – Biffen
Вам не нужно избегать регулярных /, вам нужно только избежать обратных косых черт, таких как \\. –