Я пытаюсь запустить программу командной строки и взаимодействовать с ней, т. Е. Отдавать команды, а также принимать команды в ответ, и команды, которые я даю, должны изменить предыдущее состояние программы. Я попытался и смог успешно выполнить его, но для интерактивной части ответа нет. Это мой код:
protected void doWork() {
SwingWorker<String, Void> worker = new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
ProcessBuilder builder = new ProcessBuilder("e:/program files/urjtag/jtag.exe");
builder.redirectErrorStream(true);
Process process = builder.start();
ConsoleReader consoleReader = new ConsoleReader(process.getInputStream());
consoleReader.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String s = "";
while((s=br.readLine())!=null){
System.out.println(s);
}
System.out.println(consoleReader.getResult()+" <<<<<<<<<<<<<");
int waitFor = process.waitFor();
consoleReader.join();
switch (waitFor) {
case 0:
return consoleReader.getResult();
default:
throw new RuntimeException("Failed to execute " + builder.command() + " \nReturned message: "
+ consoleReader.getResult());
}
}
@Override
protected void done() {
try {
showCommandResult(get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
showCommandError(e);
}
}
};
worker.execute();
}
Я взял его из здесь.
Я взял идею использования BuffuredReader из здесь, но ответа от программы просто нет.
Также, когда я запускаю программу, ничего не появляется, хотя, когда я запускаю ее в папке, она показывает свое собственное приглашение.
BufferedReader
будет читать целую строку, я сомневаюсь, что это сработает, если вам придется иметь дело с подсказками. - person fge   schedule 17.06.2013ConsoleReader
? - person fge   schedule 17.06.2013new BufferedReader(isr).read()
? - person Sukhmeet Singh   schedule 18.06.2013