私は、Java6で記述されたSolaris用のコマンドラインアプリケーションに取り組んでいます。多くのUnixツール(シェル、VIMコマンドモードプロンプトなど)で許可されているように、上下の矢印を使用して以前のコマンドの履歴をスクロールできるようにしたいと思います。
これを達成するための標準的な方法はありますか、それとも自分でロールする必要がありますか?
私は、Java6で記述されたSolaris用のコマンドラインアプリケーションに取り組んでいます。多くのUnixツール(シェル、VIMコマンドモードプロンプトなど)で許可されているように、上下の矢印を使用して以前のコマンドの履歴をスクロールできるようにしたいと思います。
これを達成するための標準的な方法はありますか、それとも自分でロールする必要がありますか?
はい、GNUreadlineライブラリを使用してください。
あなたはJLineのようなものを探していると思いますが、私はそれを使ったことがないので、その品質を証明することはできません。
彼女はオートコンプリートとコマンドラインの履歴を処理できるようです。最後のリリースは最近(今年2月)だったので、決して死んではいません。
ledit は、Linux でそのようなことを行うのに最適です。おそらく、solaris で簡単にコンパイルできます。
明確化: ledit は他のコマンド ライン アプリへの呼び出しをラップし、ファイルを渡して履歴を永続的に保存することもできます。
ホームページはこちら: http://cristal.inria.fr/~ddr/ledit/
GNU readline への JNI ベースのバインディングを提供する SourceForge プロジェクトhttp://java-readline.sourceforge.net/があります。私はそれをいじってみましたが (実際のプロジェクトでは使用されていません)、確かにすべての機能をカバーしています。
警告: GNU readlineには GPL ライセンス条件が適用されます:
Readline はフリー ソフトウェアであり、GNU General Public License バージョン 2 の条件に基づいて配布されます。これは、誰かにリリースまたは配布するプログラムで Readline を使用する場合、そのプログラムはフリー ソフトウェアであり、GPL が適用されている必要があることを意味します。互換ライセンス。ライセンスを GPL 互換にするためのアドバイスが必要な場合は、licensing@gnu.org に連絡してください。
つまり、Readline を使用すると、GPL らしさがライブラリからプログラム全体に広がります。(ライブラリへの実行時リンクを許可し、ライブラリ自体の改善のためだけにオープンソースを必要とする LGPL とは対照的です。)
商用アプリケーションを開発していない場合でも、商用の世界にいる私たちにとって、これはショーストッパーです。
とにかく、ウィキペディアのページには、有望に聞こえる JLine を含むいくつかの代替案がリストされています。
余談ですが、私は医療製品を設計する会社で働いています。PC ソフトウェアの収益はゼロ (0) ドルです。当社のソフトウェアのほぼすべてが、当社が設計した組み込みシステム上で実行されます (このソフトウェアの販売やアップグレードから収益を得ることはありません。製品自体のみです)。エンド ユーザーの PC で実行できるソフトウェア診断ツールがある場合もあります。(顧客にリリースされていない設計/製造/テスト ソフトウェアで、GPL ライブラリを使用できる可能性があると思いますが、確かではありません) 医療製品はかなり厳密に管理されています。基本的に、ユーザーにとって安全であることを FDA に証明する必要があります。エンド ユーザーが「ああ、このソフトウェアが気に入らないので、微調整するか、XYZ 社のアフターマーケット代替品を使用します」と判断できるわけではありません。デバイス メーカーは大きな責任を負うことになります。