2012-08-01 37 views
0

我正在开发Serversoftware Bukkit的插件,它应该重新启动它。所以我添加了主函数,它检查正确的参数,然后启动Bukkit。但是在它启动Bukkit之前,它应该等待Bukkit在我重新启动之前关闭。我知道我可以增加超时时间,但我希望有更好的方法。那么有人知道如何做到这一点?如何检查Javaprocess是否仍在运行?

+0

http://stackoverflow.com/questions/2318220/how-to-programmatically-detect-if-a- java-under-windows- – 2012-08-01 22:28:09

+1

是的,我已经看到,但我需要一个独立的平台 – 2012-08-01 22:33:04

+0

对于Linux,您可以使用jps命令。对于Windows @ While-E提供了一个解决方案 – 2012-08-01 23:10:26

回答

0

一种方法是使用System.getProperty("os.name");检查操作系统并运行特定平台的ad hoc命令(例如:LinuxWindows)。

+1

也想到了这一点,但不确定我是否会找到正确的过程。想法是将进程本身或者pid作为参数添加,但是如果您在Windows上运行客户端和服务器,则它们都称为java.exe。 – 2012-08-01 22:52:20

0

当你启动多个java进程时,它们似乎都有相同的标识符,这似乎是你的问题。 “区分”过程是你的问题,而不是杀死他们。

因此,您可以自己编写程序来创建该过程,从而能够记录用于该过程的PID。然后杀死它将非常简单: http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html

另一个想法是使用JPS获取有关所有java进程的信息。一个简单的算法须藤这里讨论的是: http://bluepedia.blogspot.com/2008/11/jps-differentiate-between-multiple-java.html

希望我能有一定的帮助..