У меня есть внешняя исполняемая программа, которую я хочу запустить из моей java-программы. Хотя он работает, мне нужен способ получить то, что выводит.exe, а также способ затем отправить вход обратно в.exe. Это то, что я додумал до сих пор:
public int run(){
String cmdRun = "cmd C:\\Meister\\Student\\bin\\Student.exe";
int returnCode = 1;
try {
Process p = Runtime.getRuntime().exec(cmdRun); // makes appropriate system call
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String s = null;
// read any info from the attempted command
while ((s = stdError.readLine()) != null){ returnCode = -1; break; }
while ((s = stdInput.readLine()) != null){ System.out.println(s); }
System.out.println("Finished with exit code " + p.waitFor());
} catch (Exception e) {
e.printStackTrace();
}
return returnCode;
}
Как я должен правильно выполнить (1) программу, GET (2) выход программы, а затем SEND (3) ввести программу, когда это необходимо?
EDIT: Кстати, когда я запускаю метод, увиденный выше, я не вижу никакого вывода, даже если файл выполняется.
Попробуйте создать файл, в котором будет храниться вход, который вы хотите получить.exe, и создать другой файл для хранения вывода.exe, чтобы он мог быть прочитан программой java.
если это не помогло, вот некоторые ссылки, которые, мы надеемся, будут:
все о построителе процессов: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html
Я также нашел это во время поиска немного:
java runtime.getruntime() получение результата от выполнения командной строки
Process
и способ отправки сообщений в программу.