2014-01-15 6 views
6

楽しいために、ミニクラフトサーバーをセットアップしようとしていて、コントロールパネルを追加して管理しやすくしています。このコントロールパネルの一部は、パネルからサーバーを実行して、終了ボタンのクリックミスを無駄にすることを減らすことです。 (minecraftサーバは実行不可能な.jarファイルであり、コマンドラインから実行するには.batを作成する必要があることを暗示します)私は自分のプログラム内でサーバを実行する方法と、出力をプリントする方法を知っています:自分のプログラム内からミニクラフトサーバーを実行する

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(); 

しかし、これでは、入力方法を実装する方法がわかりません。たとえば、ボタンをクリックすると、このコマンドパネルがない場合と同様に、入力を「停止」して外部ジャーにサーバーを停止させます。私はそれをどのように実装するのですか?上記のコードは自分のスレッドで実行する予定ですが、多分私はこれをすべて間違っていますか?

ありがとうございます!

答えて

4

ProcessクラスにはgetOutputStream()メソッドがあります。あなたはこのような何かを試すことができる:

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

これは美しいです!どうもありがとうございました :) – PulsePanda

関連する問題