Я пытаюсь использовать ProcessBuilder для выполнения простого скрипта python из CMD, который печатает в командной строке, затем этот текст читается в Java и выводится через System.out.println () в netbeans. Моя проблема в том, что BufferedReader, кажется, останавливается на .readLine (), а затем выводит текст сразу после того, как скрипт py перестал работать, в отличие от вывода в реальном времени.
Мой процесс выглядит следующим образом:
[выполнить скрипт python]
Executors.newSingleThreadExecutor().execute(this::TEST);
[запустить выполнение]
public void TEST(){
try {
ProcessBuilder py = new ProcessBuilder("cmd", "/C", "C:\\Users\\Documents\\TEST.py");
String readLine;
Process launch = py.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(launch.getInputStream()));
while((readLine = reader.readLine()) != null){
System.out.println(readLine);
}
} catch (IOException ex) {Logger.getLogger(Template.class.getName()).log(Level.SEVERE, null, ex);}
}
[вот сценарий Python, который я хочу запустить и прочитать в прямом эфире]
import Tkinter, tkFileDialog, tkMessageBox
root = Tkinter.Tk()
root.withdraw()
root.resizable(width=Tkinter.TRUE, height=Tkinter.TRUE)
root.geometry('{}x{}'.format(400,600))
print("hello1\n")
print("hello2\n")
print("hello3\n")
print("hello4\n")
print("hello5\n")
tkMessageBox.showinfo("Complete!", "testing")
print("hello6\n")
print("hello7\n")
print("hello8\n")
print("hello9\n")
print("hello10\n")
tkMessageBox.showinfo("Complete!", "testing")
Спасибо!!!