Java를 사용하여 GUI를 만들고 있습니다. 이 GUI는 ProcessBuilder 클래스를 사용하여 명령 행에서 프로그램을 시작합니다.다른 프로그램의 출력을 자바 텍스트 영역에 인쇄
실행중인 프로세스에 대한 정보가 거의 없습니다. 명령 줄에서 다른 창을 만들고 해당 창에 정보를 인쇄합니다.
제 GUI 창에서 출력물을 리디렉션 할 텍스트 영역이 있습니다. 원래 SwingWorker 객체를 사용하여 더 많은 출력을 지속적으로 확인하고 GUI를 유지하려고하지 않았습니다. 테스트하고 내가 원래 구문을 가지고 있는지 확인하기 위해 (심지어 GUI를 사용하지 않고) 보조 프로세스의 출력을 System.out으로 출력한다고 생각했습니다. 그러나 2 차 프로세스 '창에서 결과를 볼 수 있지만 작업중인 터미널은 볼 수 없으므로 문제가있는 것으로 보입니다. 다음과 같이 코드의
발췌은 다음과 같습니다
Process p = pb.start();
Scanner s = new Scanner(p.getInputStream());
SwingWorker pipe = new SwingWorker<String, Void>(){
public String doInBackground(){
while(run){
if(s.hasNextLine()){
System.out.println("S has next!");
System.out.println(s.nextLine());
}
}
return null;
}
};
pipe.execute();
부울 실행 프로그램의 다른 곳에서 정의되며, 프로세스 P가 종료되거나 힘이 종료 할 때 false로 설정 (추가 질문 : 정말 나쁜 것입니다 아이디어? 나는 그것이있을 것 같은 느낌이 든다. ..).
다른 사람에게 출력되는 것을 본 적이없는 이유는 누구입니까? 처음에는 p.getOutputStream()을 사용했지만 Scanner는 outputStream을 매개 변수로 사용하지 않았습니다.
감사합니다.
실제로 프로그램이 창에 인쇄하고있는 모든 것이 실제로 STDERR로 인쇄되고있는 것으로 나타났습니다. 흥미 롭 군. 감사! – RCC