2014-01-15 2 views
6

재미있는 작업으로 minecraft 서버를 설정하려고하는데, 더 쉽게 관리 할 수 ​​있도록 제어판을 추가하고 싶습니다. 이 제어판의 일부는 패널에서 서버를 실행하여 이탈 버튼을 놓치지 않고 무엇을하지 않을지를 줄이는 것입니다. (minecraft 서버는 실행할 수없는 .jar 파일이며 명령 줄에서 실행하려면 .bat을 사용해야 함을 의미합니다) 내 프로그램 내에서 서버를 실행하는 방법과 출력을 출력하는 방법을 알고 있습니다. 여기에내 프로그램 내에서 minecraft 서버를 실행하십시오.

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "gscale.jar"); 
     pb.redirectErrorStream(true); 
     pb.directory(new File("F:\\Documents and Settings\\Administrator\\Desktop")); 

     System.out.println("Directory: " + pb.directory().getAbsolutePath()); 
     Process p = pb.start(); 
     InputStream is = p.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     for (String line = br.readLine(); line != null; line = br.readLine()) { 
       System.out.println(line); // Or just ignore it 
     } 
     p.waitFor(); 

그러나이 방법으로 입력 방법을 구현하는 방법을 모르겠습니다. 예를 들어, 버튼을 클릭하면이 명령 패널없이 서버를 중지하기 위해 외부 병에 "stop"입력을 보냅니다. 어떻게 구현할 수 있을까요? 위의 코드는 자체 스레드로 실행하려고하지만 어쩌면 내가이 모든 것을 잘못하고있는 것입니까?

미리 감사드립니다.

답변

4

Process 클래스에는 getOutputStream() 메서드가있는 것 같습니다. 다음과 같이 시도해 볼 수 있습니다.

OutputStream os = p.getOutputStream(); 
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); 
bw.write("stop"); 
bw.newLine(); 
bw.flush(); 
+0

이것은 아름답습니다! 고마워요 :) – PulsePanda

관련 문제