我正在尝试设置一个Minecraft服务器,以获得乐趣,并希望添加一个控制面板以便更轻松地管理它。此控制面板的一部分是从面板运行服务器以减少错过单击退出按钮和什么不是。 (minecraft服务器是一个不可运行的.jar文件,暗示你必须使用.bat从命令行运行它。)我知道如何在我的程序中运行服务器,以及打印输出,这里: / p>
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”发送到外部jar以停止服务器,就像没有此命令面板一样。我该如何实现呢?上面的代码我打算在它自己的线程中运行,但也许我这样做都错了?
提前致谢!
答案 0 :(得分:4)
看起来Process
类有getOutputStream()
方法。你可以尝试这样的事情:
OutputStream os = p.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("stop");
bw.newLine();
bw.flush();