Linuxのように、Windowsで特定のJavaプロセスを強制終了します(ps -aux
でprocessidを取得し、kill processid
でプロセスを強制終了します)。
JRE に含まれるjps
ユーティリティを使用して、JavaプロセスのプロセスIDを見つけることができます。出力には、実行可能JARファイルの名前またはメインクラスの名前が表示されます。
次に、Windowsタスクマネージャを使用してプロセスを終了します。コマンドラインでそれをしたい場合は、
TASKKILL /PID %PID%
また、タスクマネージャでJavaプログラムのPIDを見つけることができます。[〜#〜] pid [〜#〜]およびコマンドライン columns View -> Select Columns
そして、適切なプロセスを見つけることができます。
結果は次のようになります。
これは、jarのインスタンスが複数実行されている場合でも機能します
wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
私が見つけた解決策は非常に簡単です。 WindowのWMICとJavaのランタイムを使用して、プロセスを見つけて強制終了します。
パート1:アプリのスタートアップコマンドラインに何らかの識別子を配置する必要があります。例えば。何かのようなもの:
String id = "com.domain.app";
パート2:アプリを実行するときは、必ず文字列を含めてください。 Java内から起動するとしましょう。次のようにします。
Runtime.getRuntime().exec(
"C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);
パート3:プロセスを強制終了するには、WindowのWMICを使用します。上記のIDを含むアプリが開始されたことを確認してください:
Runtime.getRuntime().exec(
"wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
Windows XP以降では、すべてのプロセスIDをリストするコマンドtasklistがあります。
Windowsでプロセスを強制終了するには、以下を参照してください。
Windowsでプロセスを強制終了する|スタックオーバーフロー
JavaでOSコマンドを実行できます:
Runtime.getRuntime().exec("your command here");
コマンドの出力を処理する必要がある場合は、例を参照してください。 JavaでRuntime.exec()を使用
これはWindowsに固有です。特定のJavaプログラムを強制終了する必要があるという同じ問題に直面していました。Javaプログラムを実行すると、tasklistはイメージ名をJava.exeとして設定しますが、taskkill /F Java.exe
を使用してそれを強制終了すると、他のすべてのJava不要なアプリケーション以外のアプリケーション)が停止します。
だから私は同じJavaプログラムを使用して実行します:
start "MyProgramName" Java java-program..
ここでstartコマンドは新しいウィンドウを開き、ウィンドウのタイトルをMyProgramNameに設定してJavaプログラムを実行します。
このJavaプログラムを強制終了するには、次のtaskkillコマンドを使用します。
taskkill /fi "MyProgramName"
Javaプログラムは強制終了されるだけです。残りは影響を受けません。