gpt4 book ai didi

java - 启动并获取 .jar 的输出(例如 Minecraft Bukkit .jar)

转载 作者:行者123 更新时间:2023-12-01 12:45:38 24 4
gpt4 key购买 nike

我正在尝试使用以下代码在 .jar 内启动一些 .jar:(我正在尝试使用 craftbukkit 服务器,知道)

Runtime rt = Runtime.getRuntime();
Process p = rt.exec("java -jar craft.jar");
BufferedReader out = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedWriter in = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
this.running = true;

while(this.running){
String line;
if((line = out.readLine()) != null){
System.out.println(line);
}
}

问题是,它工作了一段时间,但过了一会儿它就停止输出或只打印“>”,如下图所示。我怎样才能解决这个问题? **另外,向 bukkit 服务器发送命令的正确方法是什么?

An img of the error

谢谢!

最佳答案

在 Java 中使用 Process 时,在两个独立线程(while 循环)中读取 stdout 和 stderr 至关重要。否则,子进程可能会锁定,等待已填充的缓冲区被耗尽。

使用 Java 7,您实际上可以将 stderr 重定向到 stdout,并且可能将结果流重定向到父级 stdout。对于旧版本,您需要附加单独的线程。

此外:您不应使用 exec 的“单字符串”变体,而应将参数指定为数组。这更安全(不易受到解析问题的影响)。

(但我不确定这是否是您的实际问题。也许您应该转储错误流并看看它是否有帮助)

关于java - 启动并获取 .jar 的输出(例如 Minecraft Bukkit .jar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com