[英]using java to manipulate a minecraft server input/output
我正在尝试通过 java 管理我的 minecraft 服务器,但即使我可以轻松读取输出,我也无法获取命令甚至文本:
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd C:\\my\\path\\ && java -jar server.jar nogui");
builder.redirectErrorStream(true);
Process p;
p = builder.start();
this.p = p;
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (loop) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
这工作得很好,但是当我尝试发送命令时它根本不起作用:
OutputStream os = BotData.minecraftServer.getOutputStream();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(os));
String stop = "stop";
try {
out.write(stop + "\n");
out.write("\n");
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我已经尝试过使用"Command:>>" + stop + "\n"
在stop
等之前有或没有/
。
强制或不强制终止进程,在线程中启动它然后我会停止......
我既无法获得文本也无法使用命令。
文件说来自 cmd 的命令应该带有前导/
。 尝试发送/stop
而不是stop
。
还要注意,线line = r.readLine();
在进程处于活动状态时(默认情况下),可能永远不会返回null
。
好的,找到它,需要使用 write() newline() 然后 flush() 将任何内容发送到控制台。
我的第二个问题是对我的流程的死引用。
破坏进程不起作用,但停止命令可以。
使用 / 没用,\n 不会替换 newline()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.