1

我最近试图制作一个 Swing GUI 来发送和接收来自第三方命令行程序的命令。我使用了与命令提示符使用和工作相同的过程,即ProcessBuilder执行类,然后使用 BufferedReader 从程序中读取响应。我肯定可以再次提及,我至少可以从 Windows 命令提示符读取一些响应(有时我需要使用扫描仪)。当我在这个命令行程序上使用相同的,

  1. 它没有出现

  2. 它没有响应 BufferedReader 或 Scanner。

    我搜索了互联网,发现一个单调的回复,对它们执行相同的过程不是一回事,因为它们不是相同的东西。直到现在我还没有完成我的项目,但是如果我知道它们之间有什么区别,它们的执行方式,它们不一样,有什么办法可以实际上把它们放在一起,我的问题就可以解决了吗?

4

2 回答 2

1

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

或者程序需要一些特定的库才能与 shell 交互(这里似乎是readline ),而这在您的 Java 环境中不存在。

作为一个快速破解,您可能会尝试启动bash(或cmd)然后启动该工具。bashcmdreadline图书馆。我这里没有准备好窗口,但作为一种猜测,只是尝试调用你的程序,cmd urjtag.exe而不是像urjtag.exe你那样启动一个cmd进程(你可以与之交互)并cmdurjtag.exe你已经知道它可以交互的地方开始。

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

于 2013-06-20T07:53:43.180 回答
0

来自 UrJTAG 文档:

JTAG (IEEE 1149.1) 是用于测试带有集成电路的设备的串行接口。

UrJTAG 是一个软件包,它可以通过 JTAG 适配器与 JTAG 感知 (IEEE 1149.1) 硬件设备(部件)和板一起工作。

  1. 它不是命令提示符。
  2. 它并不打算用作通用程序的命令提示符。

所以,正如其他单调的反应已经告诉你的那样,它和 windows 命令提示符不是一回事,即使你似乎认为它们是。如文档中所述,它有一个非常具体的用例。

windows 命令提示符是一个特殊的程序,它调用特定的可执行文件并以特定的方式将命令行参数传递给它们。

java.exe可执行文件旨在理解这种调用。

由于 UrJTAG 可执行文件不是一个通用的命令提示符,它不像 windows 命令提示符那样做,因此不能像你想要的那样运行 Java 程序。

于 2013-06-20T08:07:58.223 回答