Выполнение внешней программы на Java с аргументами - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь запустить внешнюю программу в Java следующим образом:

Process p = Runtime.getRuntime().exec("./shufflet 1 2 <in.seq> out.seq");
BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line;
while ((line = bri.readLine()) != null) {
    System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
    System.out.println(line);
}
bre.close();
p.waitFor();

По сути, эта программа, которую я выполняю (Shufflet), читает все, что находится в in.seq, и затем что-то пишетна out.seq на основе этого.

Если я скопирую + вставлю эту строку (./shufflet 1 2 <in.seq> out.seq) в командную строку, она будет работать нормально.

Если я выполню Java-программу, она выдаст Usage: shufflet [OPTIONS] NSEQ ORDER <INFILE >OUTFILE это сообщение об ошибке, которое выдает Shufflet, если параметры неверны.

Я знаю, что параметры верны, потому что, опять же, он работает, если я скопирую + вставлю его в командную строку.

Есть идеи?

1 Ответ

0 голосов
/ 02 декабря 2011

Вы пробовали с DataInputStream?

DataInputStream myStream = new DataInputStream(p.getInputStream());

while ((line = myStream.readLine()) != null) {
    System.out.println(line);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...