Ну, во-первых, если в C:/
нет WE.EXE
, это может быть проблемой.Если ни один процесс не запущен, конечно, вы ничего не можете сделать с его каналами ввода / вывода.
Однако, если у вас есть WE.EXE
, ваша ошибка, вероятно, равна:
st.flush();
Ваше приложение открывается WE.EXE
в командной строке или cmd.exe, который позаботится как о стандартном вводе, так и о стандартном выводе.Ваш вызов stdInput.readLine();
будет ждать, пока WE.EXE
, и, следовательно, cmd.exe
завершится, и в этот момент выходной поток будет закрыт (и вы, очевидно, не сможете писать в закрытый канал).
Итакесли вы хотите обрабатывать ввод и вывод самостоятельно, вы должны запустить WE.exe
напрямую, например:
Process p = Runtime.getRuntime().exec("C://WE.EXE");
Кроме того, вы можете рассмотреть возможность использования ProcessBuilder вместо Runtime.exec.
Мелкие детали, но рассмотрите возможность использования Соглашения об именах Java - например, имя вашего класса будет Run2 (или что-то более описательное) вместо run2.