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

java CliMain arg1 arg2

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

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

有帮助吗?

解决方案

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

执行此操作的一种方法是使用REST over HTTP。

其他提示

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

你可以让GUI应用程序(比如编辑器)听

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

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

3)队列
   您可以从CLI程序中获取enque并从GUI程序中解除。

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

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

起初看起来很难,但是当你尝试过时,你会很快发现它有多容易。它还支持通过 SSL 。因此,如果在线有安全相关数据,您可以保护数据交换。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top