2011-07-01 5 views
0

Eclipse에서 Java 코드를 작성했으며 워크 벤치에 버튼을 포함하는 플러그인을 개발 중입니다. 이 버튼을 클릭하면 배치 파일 (c:/program file/prism 4.0/bin에 있음)이 열립니다.자바에서 자식 프로세스의 출력을 작성하는 방법

코드가 .bat 파일을 성공적으로 엽니 다. 하지만 내 다음 작업은 콘솔에 배치 파일의 출력을 쓰는 것입니다. 배치 파일은 표준 오류에 기록 경우 자바 프로그램이 그렇지 않은 경우를 소비해야

..... 
Process p = pb.start(); 

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 

String in; 
while((in = input.readLine()) != null) { 
    out.println(in); 
} 

int exitVal = p.waitFor(); 
..... 

참고 : 이클립스 IDE 버전을 사용하고 3

내 코드

MessageConsoleStream out = myConsole.newMessageStream(); 
     out.println("We are on console ! \n Shubham performed action"); 


try { 

     ProcessBuilder pb=new ProcessBuilder("C:\\Program Files\\prism-4.0\\bin\\prism.bat"); 
     pb.directory(new File("C:\\Program Files\\prism-4.0\\bin")); 
     Process p=pb.start(); 

     int exitVal=p.waitFor();    

     out.println("Exited with error code "+exitVal+" shown and action performed \n"); 

      out.println("Shubham Process Successful"); 
      out.println("Printing on console"); 

     } 
     catch (Exception e) 
     { 
      out.println(e.toString()); 
      e.printStackTrace(); 

     } 
    } 
+2

그래서 질문은 어디에 있습니까? –

+0

이 숙제가 있습니까? 실제 질문을하고 질문에 더 명확한 제목을주십시오! – greydet

답변

0

이 좋아하니이다 p.waitFor()은 결코 반환되지 않습니다.

+0

고맙습니다 :) :) –

+0

이 질문에 대한 답을 제안 해 주시겠습니까? http://stackoverflow.com/questions/6896101/java-how-to-access-file-path-from-preference-page- and-use-it-in-programming-cod/6898143 # 6898143 –

0

큰 호의와 http://commons.apache.org/exec/을 확인하십시오. 시간 초과, 입출력 처리, 심지어 커맨드 라인 생성이 더 쉽고 오류가 발생하기 쉬운 외부 ​​프로세스를 관리하는 것에 대한 모든 끔찍한 세부 사항을 처리합니다.

+0

이 링크로 어떤 대답을 제안 할 수 있습니까? http://stackoverflow.com/questions/6896101/java-how-to-access-file-path -from-preference-page-and-use-in-programming-cod –

0

프로세스의 InputStream에서 올바르게 읽으려면, 별도의 스레드에서 그렇게해야합니다. this similar question을 참조하십시오.

+0

응답 해 주셔서 감사합니다. 하지만 InputStream()을 사용했습니다. –

+0

[Process.getInputStream()] (http://download.oracle.com/javase/1.4.2/docs/api/java)를 사용하여'Process'에서'InputStream'을 얻을 수 있습니다. /lang/Process.html#getInputStream()) 또는 [Process.getErrorStream()] (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html#getErrorStream ()). 두 경우 모두 별도의 스레드에서 출력을 소비해야합니다 [Process.waitFor()] (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process .html # waitFor()) on. – sudocode

+0

이 링크를 사용하여 답변 해 줄 수 있습니까? http://stackoverflow.com/questions/6896101/java-how-to-access-file-path-from-preference-page-and-use-it-in- 프로그래밍 대구 –

관련 문제