3

私のjarが開始しているプロセスの名前を制御できる方法があるかどうかを知りたかったのです。つまり、
Javaで.jarファイルを作成しました。この名前を制御します。jarファイルをクリックすると、すでに実行されている場合は停止し、新しいスレッドが開始されるはずです。つまり、前のスレッドを停止して、クリックするたびに新しいスレッド(プロセス)を実行したいからです。 . javaw.exe という名前のプロセスを強制終了すると、javaw.exe という名前のすべてのプロセスが停止します (複数のプログラムを実行している場合)。だから、私はその名前を変更する必要があります。助けてください。ありがとう !

4

3 に答える 3

3

javaw走る ことは何も悪いことではありません。ドキュメントから

javawコマンドはjavaと同じですが、javawには関連するコンソールウィンドウがない点が異なります。コマンドプロンプトウィンドウを表示したくない場合は、javawを使用します。ただし、javawランチャーは、何らかの理由で起動が失敗した場合に、エラー情報を示すダイアログボックスを表示します。

最終的にjavawは、コンソールウィンドウなしでプログラムを実行します。その名前を変更すると、後で深刻な問題が発生する可能性があるため、その特定のプログラム名を保持する必要があります。

于 2013-01-28T04:32:53.173 に答える
1

なぜ車輪を再発明するのですか?同じプログラムの 2 つのコピーが実行されるのを防ぐ標準的な方法が既にあります。通常、ファイルシステムはディレクトリの更新がアトミックであることを保証するため、「フラグ」ファイルを作成する必要があります。UNIX 系のシステムでは、ファイルは /var/run/program-name.pid になります。すでに存在する場合、2 番目のコピーはエラーで終了します。

于 2013-01-28T04:38:19.357 に答える
0

インスタンスを管理するコントローラープロセスをセットアップできます。

最初に、特定のポート (これからはプログラムの「名前」) で tcp/ip を介して localhost のコントローラーに接続しようとし、成功した場合は、そのコントローラーに「新しいインスタンスが開始されました」などのメッセージを送信します。接続が成功しなかった場合は、現在の vm で新しいコントローラー スレッドを開始します (そして、このスレッドにメッセージを再度送信します)。

コントローラーはループしてメッセージを待機し、「新しいインスタンスが開始されました」と一致する場合は、説明したことを実行します。

このようなコントローラーは、単純な ServerSocket、小さな HTTP サーバー、または他の多くのメッセージング ライブラリを使用して簡単に構築できます。

于 2013-01-28T06:22:23.427 に答える