Java 无法使用输出流发送命令

Java 无法使用输出流发送命令,java,process,cmd,bukkit,Java,Process,Cmd,Bukkit,我正在尝试编写一个小型Java应用程序,它将允许我使用Java Process/ProcessBuilderAPI在屏幕外运行Bukkit服务器 我能够很好地从服务器获取输出,但是服务器不响应由Process.getOutputStream()(链接到流程输入流)返回的输出流编写的命令 我试着用我自己的测试代码来做这件事,它成功了。从系统中读取的单独进程。在中接收写入输出流的文本 Bukkit不在或其他地方收听系统吗? 如果没有,怎么可能呢? 有什么想法吗 try { ProcessBu

我正在尝试编写一个小型Java应用程序,它将允许我使用Java Process/ProcessBuilderAPI在屏幕外运行Bukkit服务器

我能够很好地从服务器获取输出,但是服务器不响应由
Process.getOutputStream()
(链接到流程输入流)返回的输出流编写的命令

我试着用我自己的测试代码来做这件事,它成功了。从
系统中读取的单独进程。在
中接收写入输出流的文本

Bukkit不在或其他地方收听系统吗? 如果没有,怎么可能呢? 有什么想法吗

try {
    ProcessBuilder pb = new ProcessBuilder();
    File dir = new File("C:/Users/Brian/Desktop/MC-Server/Bukkit-Testing");
    pb.directory(dir);
    pb.command(new String[] {"java", "-Xincgc", "-Xmx1G", "-jar", "craftbukkit-1.0.1-R1.jar"});
    pb.redirectErrorStream(true);
    final Process p = pb.start();
    InputStream out = p.getInputStream();
    BufferedReader r1 = new BufferedReader(new InputStreamReader(out));
    String s = null;
    new Thread(new Runnable() {

        @Override
        public void run() {
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
            Scanner scan = new Scanner(System.in);
            String input = null;
            while((input=scan.nextLine()) != null) {
                if(input.equals("exit")) {
                    p.destroy();
                    break;
                }
                try {
                    bw.write(input);
                    bw.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }).start();
    while((s=r1.readLine()) !=null)
        System.out.println(s);
} catch (IOException e) {
    e.printStackTrace();
}

我认为Bukkit没有使用它的
系统。在
中,所以我们必须找到解决办法

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class ConsolePlugin extends JavaPlugin {

    public Logger log;

    public void onEnable(){
        log = this.getLogger();
        log.info("BufferedReader has been enabled!");
        new Thread(new Runnable(){
            public void run(){
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                String line = null;
                while (true){
                    try {
                        line=br.readLine();
                    } catch (Exception e) {e.printStackTrace();}
                    if (line!=null){
                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), line);
                        System.out.println(line);
                    }
                }
            }
        }).start();
    }

    public void onDisable(){
        log.info("BufferedReader has been disabled.");
    }
}
要发送命令,请执行以下操作:

bw.write(input);
bw.nextLine();
bw.flush();