4

コンソールアプリケーションの設計を開始します。これは、ユーザーにコマンドの入力を求めて実行する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でこれを実現するためのフレームワーク、ツール、または手法はありますか?

4

4 に答える 4

4

最近(ごく最近)リリースされたSpringShellがあります。これは、SpringがRooシェルからRooパーツを除いたものに電力を供給するために使用したものです。独自のコマンドをプラグインして、スクリプトの記録、スクリプトの再生、パラメーターの取得、プロンプトの変更などの機能を利用できます。

付属の例を見てみると、さまざまなものを追加または変更する4つの異なるクラスがあり、非常に簡単に見えました。

于 2012-07-24T20:59:07.917 に答える
2

以前はclamshell-cliを使用しましたが、それほど複雑なことはしませんでしたが、多くの機能を備えているようです。

于 2012-07-24T20:52:44.413 に答える
1

コマンドラインパーサーPicocliがあります。2017年9月にリリースされ、Groovy、Micronaut、JUnitによってコマンドラインとしてすでに使用されています。

次の機能があります。

  • オートコンプリート
  • ANSIの色とスタイル
  • 素敵なユーザーヘルプ
  • サブコマンドをサポート
于 2018-09-15T10:41:04.833 に答える
0

これを実装する1つの方法は、リフレクションを使用することです。serverフィールドを定義connectionsし、必要なメソッドをそれらに与えます(start() stop() close())。次に、入力が解析されるときに、リフレクションメカニズムを使用して必要なメソッドを実行します。

于 2012-07-24T20:59:25.263 に答える