最近,我试图制作一个Swing GUI来从第三方命令行program发送和接收命令。我使用了与命令提示符相同的过程,即执行ProcessBuilder类,然后使用BufferedReader从程序读取响应。我可以肯定地说一遍,至少可以从Windows命令提示符下读取一些响应(有时我需要代替使用Scanner)。当我在this命令行程序上使用相同的命令时,


没有出现
它没有响应BufferedReader或Scanner。

我搜索了互联网,发现从互联网上得到的单调答复是,对它们执行相同的过程不是同一回事,因为它们不是同一回事。到目前为止,我还无法完成我的项目,但是如果我知道它们之间的区别,执行,不是相同,有什么办法可以做的话,我可以多睡一会儿真正把他们放在一起,我的问题可以解决吗?

最佳答案

该程序很可能会启动其自己的外壳,并且不再与原始外壳交互。 (如果程序打开一个新窗口,您会注意到这一点)

或者该程序需要提供一些特定的库才能与外壳进行交互(在这里readline似乎是这种情况),而Java环境中不存在。

作为一种快速技巧,您可以尝试启动bash(或cmd),然后再启动该工具。 bashcmd具有readline库。我这里还没有Windows,但我猜只是尝试像cmd urjtag.exe那样调用您的程序,而不是像urjtag.exe这样启动cmd进程(可以与之交互)和cmd在您已经知道可以与之交互的地方启动urjtag.exe

无论哪种方式,问题都在于您要调用的程序与Shell交互的方式,您应该询问程序的作者它是如何工作的以及如何连接到它。

09-11 18:50
查看更多