我想为Java应用程序实现命令行界面。这不会太难做,除了我希望命令行程序影响另一个Java GUI程序的状态。例如,我可以输入:
java CliMain arg1 arg2
另一个正在运行的GUI实例将执行适当的操作。
实现这样的最简单的方法是什么?
答案 0 :(得分:2)
您可以让GUI应用程序侦听TCP端口(在localhost
接口上),CLI应用程序将连接到它。
执行此操作的一种方法是使用REST over HTTP。
答案 1 :(得分:0)
另一种方式是通过JMX。它为您提供了许多“免费”的东西(在简单的情况下,您只需实现一个bean并注册它 - 非常简单),并且特别适合这项任务。
答案 2 :(得分:0)
你可以让GUI应用程序(比如编辑器)听
1)某种类型的剪贴板事件
如果事件属于您感兴趣的类型,则获取剪贴板内容。
2)某个端口上的服务器套接字
在服务器套接字上侦听。当CLI程序启动时,它连接到已知端口的服务器套接字,发送信息并退出。
3)队列
您可以从CLI程序中获取enque并从GUI程序中解除。
如果你想进一步调查,像emacs这样的许多专业编辑使用相同的机制。 http://www.emacswiki.org/emacs/EmacsClient
答案 3 :(得分:0)
您的申请可以通过RMI进行控制。应用程序将实现一个控制接口,在localhost上注册其服务,命令行应用程序将获得一个rmi代理并调用所需的控制方法......
起初看起来很难,但是当你尝试过时,你会很快发现它有多容易。它还支持通过SSL进行加密。因此,如果在线有安全相关数据,您可以保护数据交换。
答案 4 :(得分:0)
最简单的方法是让GUI在TCP端口上侦听命令。命令行将发送命令,GUI将解释它们。
也许您可以使用命名管道来完成它,但我不确定您将如何在Java中实现它。