Java 如何停止已执行的Jar文件

Java 如何停止已执行的Jar文件,java,windows,jar,executable-jar,Java,Windows,Jar,Executable Jar,问这个问题感觉像是个愚蠢的问题,但我似乎无法理解。当我在windows上运行*.jar文件时,它不会出现在taskmanager进程中。如何终止它,我已经尝试过TASKKILL,但它对我也不起作用。您是否尝试过在taskmanager中终止java.exe进程?然后应该停止。您可以在taskmanager中通过查找“java”或“javaw”进程来识别该进程。如果您正在运行多个java进程,则会出现问题。如果您能够识别您的流程,只需终止它 另一方面: 跑 它显示了所有正在运行的Java进程的PI

问这个问题感觉像是个愚蠢的问题,但我似乎无法理解。当我在windows上运行*.jar文件时,它不会出现在taskmanager进程中。如何终止它,我已经尝试过TASKKILL,但它对我也不起作用。

您是否尝试过在taskmanager中终止java.exe进程?然后应该停止。

您可以在taskmanager中通过查找“java”或“javaw”进程来识别该进程。如果您正在运行多个java进程,则会出现问题。如果您能够识别您的流程,只需终止它

另一方面:

它显示了所有正在运行的Java进程的PID和命令行。确定要终止的任务的PID。然后使用命令:

taskkill /PID <pid>
taskkill/PID

在windows任务管理器中,您将看到名为“java.exe”的进程。终止你的应用程序将停止的进程

要了解流程,请先转到任务管理器中的应用程序,然后通过选择该应用程序转到流程。它将引导您了解申请的确切流程

问候,,
Jaynil

正如大家所说,它要么是java要么是javaw进程。问题是当你运行多个这样的应用程序时。一种解决方法可能是以不同的方式命名流程,如中所述:


如果您正在使用jframe,并且希望在单击“X”时停止应用程序:


这里有一个教程:

您可以打开jvisualvm来查看正在运行的java进程。进程id显示在那里。现在打开任务管理器,转到流程选项卡并添加要显示的流程id列。现在,您可以选择正确的java.exe或javaw.exe在Linux上杀死

ps-ef | grep java

它将向您显示一个进程列表,其中一个进程将成为您的可执行jar。只需通过进程id杀死该进程

sudo kill-9


有没有办法从同一jar文件的java代码中实现这一点。就像进程完成后自动终止一样。

通过
jps
命令找到进程id&并通过
taskkill
命令终止它们

请注意,
taskkill
需要“
-f
”,否则它可能只是发送了一个终止信号,而不是实际终止它


spring启动/停止示例(在Windows操作系统上)

start.bat

@ECHO OFF
call run.bat start
@ECHO OFF
IF "%1"=="start" (
    ECHO start your app name
    start "yourappname" java -jar -Dspring.profiles.active=prod yourappname-0.0.1.jar
) ELSE IF "%1"=="stop" (
    ECHO stop your app name
    TASKKILL /FI "WINDOWTITLE eq yourappname"
) ELSE (
    ECHO please, use "run.bat start" or "run.bat stop"
)
pause
停止。蝙蝠:

@ECHO OFF
call run.bat stop
跑步。蝙蝠

@ECHO OFF
call run.bat start
@ECHO OFF
IF "%1"=="start" (
    ECHO start your app name
    start "yourappname" java -jar -Dspring.profiles.active=prod yourappname-0.0.1.jar
) ELSE IF "%1"=="stop" (
    ECHO stop your app name
    TASKKILL /FI "WINDOWTITLE eq yourappname"
) ELSE (
    ECHO please, use "run.bat start" or "run.bat stop"
)
pause

如果您通过命令行运行JAR文件,并且它还在运行。按,
在Windows中:
•Ctrl+C:关闭进程(可能需要管理员权限)
在Linux中:
•Ctrl+C:礼貌地要求进程立即关闭。

•Ctrl+\:无情地杀死当前处于前台的进程。

问题不清楚。您能详细说明一下吗?它将显示为“java”或“javaw”。您使用的是jframe吗?您可以在任务管理器中显示PID。查看>选择列>PID@Lenymmjps用于java进程。它将只显示java进程。它更方便,因为您不需要像task ManagerRoh那样在一个大的进程列表中搜索您的进程,但是如果我不想停止java呢?我只想停止当前的进程在我看来,这是发布的最佳答案。我讨厌必须杀死整个
java.exe
进程的想法,在我读到这个答案之前,我认为这是唯一的方法。我一直想知道为什么没有任务管理器那样的界面来管理运行中的JAR,所以我很高兴听到实际上有一个这样的界面!谢谢你提供这个答案,cproinger。