1

我想为 Java 应用程序实现一个命令行界面。这不会太难做到,除非我希望命令行程序影响另一个 Java GUI 程序的状态。例如,我可以输入:

java CliMain arg1 arg2

另一个正在运行的 GUI 实例将执行适当的操作。

实现这样的事情的最简单方法是什么?

4

5 回答 5

2

您可以让 GUI 应用程序侦听 TCP 端口(在localhost接口上),然后 CLI 应用程序将连接到它。

一种方法是使用 REST over HTTP。

于 2008-10-30T01:42:18.480 回答
0

另一种方法是通过 JMX。它“免费”为您提供了很多东西(在简单的情况下,您只需实现一个 bean 并注册它——非常简单),并且特别适合这项任务。

于 2008-10-30T01:45:12.577 回答
0

您可以让 GUI 应用程序(如编辑器)监听

1) 特定类型的剪贴板事件
如果该事件是您感兴趣的类型,则获取剪贴板内容。

2)某个端口
上的服务器套接字侦听服务器套接字。当 CLI 程序启动时,它连接到已知端口的服务器套接字,发送信息并退出。

3) 队列
你可以从 CLI 程序入队和从 GUI 程序出队。

如果你想进一步调查,许多像emacs这样的专业编辑器使用相同的机制。http://www.emacswiki.org/emacs/EmacsClient

于 2008-10-30T02:06:15.340 回答
0

您的应用程序可以通过RMI进行控制。该应用程序将实现一个控制接口,在 localhost 上注册其服务,命令行应用程序将获得一个 rmi 代理并调用所需的控制方法......

一开始似乎很难,但当你尝试过之后,你很快就会发现它是多么容易。它还支持通过SSL加密。因此,如果在线有安全相关数据,您可以保护您的数据交换。

于 2008-10-30T05:42:37.387 回答
0

最简单的方法是让 GUI 监听 TCP 端口上的命令。命令行会发送命令,而 GUI 会解释它们。

也许您也可以使用命名管道来做到这一点,但我不确定您将如何在 Java 中实现它。

于 2008-10-30T06:00:39.127 回答