0

我正在尝试运行一个命令行程序并与之交互,即给出命令以及接受命令作为响应,我给出的命令应该改变程序的先前状态。我试过并且已经能够成功执行它,但是对于交互部分没有响应。这是我的代码:

 protected void doWork() {
        SwingWorker<String, Void> worker = new SwingWorker<String, Void>() {
            @Override
            protected String doInBackground() throws Exception {
                ProcessBuilder builder = new ProcessBuilder("e:/program files/urjtag/jtag.exe");
                builder.redirectErrorStream(true);
                Process process = builder.start();
                ConsoleReader consoleReader = new ConsoleReader(process.getInputStream());
                consoleReader.start();
                InputStream is = process.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                 String s = "";
                while((s=br.readLine())!=null){
                 System.out.println(s);
                }
                System.out.println(consoleReader.getResult()+" <<<<<<<<<<<<<");
                int waitFor = process.waitFor();
                consoleReader.join();
                switch (waitFor) {
                case 0:
                    return consoleReader.getResult();
                default:
                    throw new RuntimeException("Failed to execute " + builder.command() + " \nReturned message: "
                            + consoleReader.getResult());
                }
            }
            @Override
            protected void done() {
                try {
                    showCommandResult(get());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                    showCommandError(e);
                }
            }
        };
        worker.execute();
}

我从这里拿走了它。

我从这里接受了使用 BuffuredReader 的想法,但程序没有响应。

同样,当我执行程序时,什么也没有显示,尽管当我在文件夹中执行它时,它会显示自己的提示。

4

0 回答 0