3

Java プログラムを実行しようとしていて、Main クラスの正確な名前がわからない場合、タブ補完を使用してそれを把握する方法はありますか?

java -cp stackoverflow.jar org.<tab>
stackoverflow serverfault stackexchange

java -cp stackoverflow.jjar org.stackoverflow.<tab>
Main IntegrationTest QuestionAnswerConsole

それらの線に沿った何か。

4

4 に答える 4

3

基本的に、Java をサポートするようにシェルの自動競合を構成する方法を尋ねています。可能です。このディスカッションを見てください: bash タブ補完はどのように機能しますか?

これは、メイン クラスを検出するためだけでなく、他のコマンド ライン オプションとクラス パスを完成させるためにも良いアイデアであると言わざるを得ません。そのようなスクリプトを開発する場合は、喜んで使用します。幸運を。

編集

少なくとも私のUbuntuファイルにless /usr/share/bash-completion/completions/javaは存在するため、いくつかの補完が機能するはずです。スクリプトの改善はいつでも大歓迎です。

于 2013-07-24T21:12:31.167 に答える
1

あなたが話しているタブ補完を取得する唯一の方法は、「Java対応」のシェル、またはjavaコマンドにこの機能を提供するシェルスクリプトを使用することです。gitも同様の機能を持っているので、完全に不可能ではないと思います。

編集:

SU に関するこの質問によれば、bash シェル用のオートコンプリート スクリプトを作成できます。SU に関する質問は、あなたが尋ねているものとは少し異なるため、この質問に関連する具体的な詳細はあまり見当たりません。ただし、始めるには良い場所のようです。

于 2013-07-24T21:12:00.563 に答える
0

クラス名がjarファイルに隠されている場合、クラス名の自動補完を取得する簡単な方法がわかりません。

一方、マニフェストを jar に追加して、自動実行可能にすることができます (つまり、実行するだけですjava -cp ... -jar stackoverflow.jar)。

jar アーカイブにフォルダーを追加し、META-INFそのフォルダー内に次のようなMANIFEST.MFファイルを作成します。

Main-Class: org.stackoverflow.Main

(またはあなたのメインクラスが実際に何であれ)。

ここにいくつかのドキュメントがあります:アプリケーションのエントリポイントの設定

于 2013-07-24T21:10:54.203 に答える
0

他の回答は解決策を示唆していますが、補足として、jarファイルのメンテナーが path を含むマニフェストファイルを提供する場合、それは必要ありませんMETA-INF/MANIFEST.MF。次にjava、マニフェストからメイン クラスを自動的に抽出し、次の方法で実行できます。

java -jar stackoverflow.jar

于 2013-07-24T21:05:27.317 に答える