Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有针对java的控制台应用程序框架?_Java_Frameworks_Console_Command - Fatal编程技术网

是否有针对java的控制台应用程序框架?

是否有针对java的控制台应用程序框架?,java,frameworks,console,command,Java,Frameworks,Console,Command,我将开始设计一个控制台应用程序。这意味着其行为类似于MySQL客户端,它会提示用户输入命令,然后执行这些命令(基本上是打开和侦听TCP端口,管理一些基本的数据库操作和服务器管理内容)。应用程序基本上接受连接并将数据返回给客户端 我希望这个应用程序在GUI和控制台模式下运行,具体取决于应用程序的启动方式(这里没有问题) GUI不是问题,而是控制台问题。 我需要的是一种定义一组命令的方法,它们可能有或没有任何数量的参数。此命令可提示确认、输入密码或返回一组数据。 我想让事情保持优雅、可维护,避免构建

我将开始设计一个控制台应用程序。这意味着其行为类似于MySQL客户端,它会提示用户输入命令,然后执行这些命令(基本上是打开和侦听TCP端口,管理一些基本的数据库操作和服务器管理内容)。应用程序基本上接受连接并将数据返回给客户端

我希望这个应用程序在GUI和控制台模式下运行,具体取决于应用程序的启动方式(这里没有问题)

GUI不是问题,而是控制台问题。 我需要的是一种定义一组命令的方法,它们可能有或没有任何数量的参数。此命令可提示确认、输入密码或返回一组数据。 我想让事情保持优雅、可维护,避免构建一个可能失控的“有限状态机”

我想实现以下目标:

[ready]> server:start;
Server started.
[running]> connections:list;
Conn     IP             Port
Name1    192.168.2.2    60000
Name2    192.168.2.4    60002
[running]> connections:close Name1;
1 connection closed.
[running]> server:stop;
password? ******
Server stopped.
[ready]>
有什么框架、工具或技术可以在Java上实现这一点吗?

我过去使用过,没有做任何太复杂的事情,但它似乎有很多功能。

最近发布了一个。这是Spring用来驱动Roo外壳的动力减去Roo部件。您可以将自己的命令插入其中,并利用其功能录制脚本、回放脚本、获取参数、更改提示等


我查看了它附带的示例,它有四个不同的类,可以添加或更改各种内容,而且看起来非常简单。

实现这一点的一种方法是通过反射。
您可以定义字段
server
connections
,并为它们提供所需的方法(
start()stop()close()
)。然后在解析输入时,使用反射机制执行所需的方法。

有一个命令行解析器。它于2017年9月推出,已经被Groovy、Micronaut和JUnit用作命令行

它有以下特点:

  • 自动完成
  • ansi颜色和样式
  • 很好的用户帮助
  • 支持子命令

那么程序中是否有命令行?听起来你需要一个解析器!我不仅需要解析命令,还需要将它们映射到应用程序上的一组方法,显示每个命令的结果,并保留应用程序本身的所有内容,这样我就可以切换到GUIsee@moritz,从GUIsee@moritz切换到GUIsee@moritz,他想要的不仅仅是解析单个命令行的东西,就像这个问题所问的那样。他正在寻找一个完整的REPL,这就是为什么像SpringShell这样的东西可能适合,但若他要使用Commons CLI这样的东西,他必须自己构建它的其余部分(提示符、环境变量等)。你能帮忙吗?自从我使用它已经有一段时间了,你可以在github上找到使用它的项目并检查他们做了什么。这个项目现在已经重新定位到github:FYI:picocli-3.2.0添加了JLine集成支持,因此你可以使用picocli命令并在你的JLine命令行shell应用程序中完成命令行。下面是一个例子: