gpt4 book ai didi

java - 检查 jar 是否正在运行

转载 作者:行者123 更新时间:2023-12-02 13:41:13 24 4
gpt4 key购买 nike

我想检查我的 jar 是否正在用户系统上运行,如果关闭则重新启动。

我知道命令jps -l,它可以检查当前正在运行的jar。唯一的问题是,要使该行正常工作,需要用户安装 JDK。所以我想知道是否有与 jps -l 行等效的行,它不需要 JDK 或任何东西,而只是检查特定的 jar 是否正在运行。

过去,我还使用过 Windows 的 cmd/c tasklist 行和 Mac 的 top -F -R -o cpu 行。检查应用程序或 exe 是否正在运行,但这似乎并没有真正起作用。当我在 Windows 上运行 tasklist 行,然后检查名为“myApp”的 exe 时,它​​没有找到它。即使它可能正在运行。否则,这将是检查正在运行的应用程序、exe 或 jar 的完美方法。

下面是我如何尝试使用 tasklist 命令检查特定可执行文件的示例代码。

try {
String procss;
Process pRun = Runtime.getRuntime().exec("cmd /c tasklist");
BufferedReader input = new BufferedReader(new InputStreamReader(pRun.getInputStream()));
while ((procss = input.readLine()) != null) {
if(!procss.contains("myApp"))
{
//Runtime command to launch exe or app.
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}

基本上我只想编辑上面的代码,拥有一个命令行,它能够实际检查 exe、app 或 jar 是否正在运行。也许还有 cmd/c tasklist 和 top -F -R -o cpu 的替代方案,它能够让电脑上运行的所有进程而不仅仅是 .exe或.app

最佳答案

在 Windows 上,您可以使用 wmic 命令来获取启动程序时使用的命令行参数。

例如,使用wmic进程,其中“name like '%java%'” get commandline,processid(基本上只是意味着“获取名称如java的进程的PID和命令行参数” )为我提供了测试程序的输出:

616

"C:\Program Files\Java\jre1.8.0_111\bin\javaw.exe" -jar "A:\Programmering\Java\Pong\out\artifacts\Pong_jar\Pong.jar"

如您所见,您可以获得正在运行的 jar 文件的位置(然后您可以使用它来检查它是否是您的程序)。在这种情况下,我只是通过双击 jar 文件来启动它,如果以不同的方式启动它,您可能会得到不同的输出,但应该总是有一些东西可以用来识别 java 进程(例如主类或 jar文件)。

关于java - 检查 jar 是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42736377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com