这感觉像是一个愚蠢的问题,但我似乎无法弄清楚。当我在 Windows 上运行 *.jar 文件时,它不会出现在任务管理器进程中。我该如何终止它,我已经尝试过 TASKKILL,但它对我也不起作用。
11 回答
在 Linux 上
ps -ef | grep java
它将显示 ua 进程列表,其中一个将是您的可执行 jar。只需通过进程 ID 杀死该进程。
sudo kill -9 <pid>
有没有办法从同一个jar文件的java代码中做到这一点。就像过程完成后杀死自己一样。
您是否尝试杀死任务管理器中的 java.exe 进程?那时它应该停止。
您可以通过查找“java”或“javaw”进程来识别任务管理器中的进程。如果您运行多个 java 进程,问题将出现。如果您能够识别您的进程,只需杀死/结束它。
其他方式:
跑
jps -lv
它显示了所有正在运行的 Java 进程的 PID 和命令行。确定要终止的任务的 PID。然后使用命令:
taskkill /PID <pid>
杀死你的 jar 进程。
你可以打开 jvisualvm 来查看正在运行的 java 进程。进程 ID 显示在那里。现在打开任务管理器转到进程选项卡并添加要显示的进程 ID 列。现在您可以选择正确的 java.exe 或 javaw.exe 来杀死
正如大家所说,它是 java 或 javaw 进程。问题是当您运行多个这样的应用程序时。一种解决方法可能是以不同方式命名该过程,如下所述:
spring boot 启动/停止示例(在 Windows 操作系统上)。
开始.bat
@ECHO OFF
call run.bat start
停止.bat:
@ECHO OFF
call run.bat stop
运行.bat
@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+ \ :无情地杀死当前在前台的进程。
在 Windows 任务管理器中,您将看到名为“java.exe”的进程。终止该进程,您的应用程序将停止。
要了解流程,首先转到任务管理器中的应用程序,然后通过选择该应用程序进入流程。它将引导您了解该应用程序的确切过程。
问候,杰尼尔
如果您使用的是 jframe,并且希望在单击“X”时停止应用程序:
这是一个教程:http ://tips4java.wordpress.com/2009/05/01/closing-an-application/
这可能是在没有外部依赖项(jps 或任何东西)的情况下终止进程的最简单方法。
wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate