使用 JLine reader 向外部程序发送命令不起作用
Sending commands to external program using JLine reader not working
我有一个程序 运行 另一个 Java 程序并向该程序发送命令,但它没有检测到命令。我发送给命令的程序使用 JLine,所以我认为这就是问题所在,它适用于不使用它的其他程序。这是我用来发送命令的代码
// On process build
OutputStream stdin = process.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(stdin);
// On button click from javafx
dataOutputStream.write(command.getBytes());
dataOutputStream.flush();
我尝试了 DataOutputStream 和 OutputStream。
命令只是什么也没做,什么也没有发生。没有诸如无效命令消息之类的输出。读取输出确实有效,错误也是如此
我无法编辑我正在尝试的程序的代码运行
我的完整代码如果有帮助的话
https://github.com/JustDoom/JustDoomLauncher/blob/master/src/main/java/com/imjustdoom/doomlauncher/justdoomlauncher/process/GameProcess.java#L36 - 创建进程并处理读取进程
https://github.com/JustDoom/JustDoomLauncher/blob/50b88bb658eb115f03fd3a9bf827c69147345e45/src/main/java/com/imjustdoom/doomlauncher/justdoomlauncher/application/ConsoleApplication.java#L42 - 在 javafx 中创建自定义控制台并写入进程
我修好了。
我最终需要在刷新之前向作者添加换行符。
所以我现在有了这个。
dataOutputStream.write(command.getBytes());
dataOutputStream.write("\n".getBytes());
dataOutputStream.flush();
编辑:当前答案确实有效,但仅适用于 jline
的较新版本而非较旧版本
我有一个程序 运行 另一个 Java 程序并向该程序发送命令,但它没有检测到命令。我发送给命令的程序使用 JLine,所以我认为这就是问题所在,它适用于不使用它的其他程序。这是我用来发送命令的代码
// On process build
OutputStream stdin = process.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(stdin);
// On button click from javafx
dataOutputStream.write(command.getBytes());
dataOutputStream.flush();
我尝试了 DataOutputStream 和 OutputStream。
命令只是什么也没做,什么也没有发生。没有诸如无效命令消息之类的输出。读取输出确实有效,错误也是如此
我无法编辑我正在尝试的程序的代码运行
我的完整代码如果有帮助的话 https://github.com/JustDoom/JustDoomLauncher/blob/master/src/main/java/com/imjustdoom/doomlauncher/justdoomlauncher/process/GameProcess.java#L36 - 创建进程并处理读取进程 https://github.com/JustDoom/JustDoomLauncher/blob/50b88bb658eb115f03fd3a9bf827c69147345e45/src/main/java/com/imjustdoom/doomlauncher/justdoomlauncher/application/ConsoleApplication.java#L42 - 在 javafx 中创建自定义控制台并写入进程
我修好了。 我最终需要在刷新之前向作者添加换行符。 所以我现在有了这个。
dataOutputStream.write(command.getBytes());
dataOutputStream.write("\n".getBytes());
dataOutputStream.flush();
编辑:当前答案确实有效,但仅适用于 jline
的较新版本而非较旧版本