2012-08-01 59 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

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