题
我想为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
最简单的方法是让GUI在TCP端口上侦听命令。命令行将发送命令,GUI将解释它们。
也许您可以使用命名管道来完成它,但我不确定您将如何在Java中实现它。
不隶属于 StackOverflow