我開發了一個Java控制檯應用程序,它在啓動時打開控制檯窗口並保留在前臺,我想在後臺啓動該應用程序。將Java控制檯應用程序作爲守護程序運行(後臺)
現在我通過這個命令行啓動應用程序:
java -jar myapp.jar
有沒有辦法實現這種行爲? 這足以改變命令行參數或我需要對我的代碼做一些更改?
我開發了一個Java控制檯應用程序,它在啓動時打開控制檯窗口並保留在前臺,我想在後臺啓動該應用程序。將Java控制檯應用程序作爲守護程序運行(後臺)
現在我通過這個命令行啓動應用程序:
java -jar myapp.jar
有沒有辦法實現這種行爲? 這足以改變命令行參數或我需要對我的代碼做一些更改?
答案取決於操作系統。
*nix: <your command> &
Windows: (opens a new console): start <your command>
Windows: (doesn't open a new console): start /b <your command>
如果你在unix的基礎上做了這個,那麼你可以在最後添加&,這會產生一個新線程並保持它在後臺運行。
java -jar myapp.jar &
如果你真的只是希望它在後臺運行,java -jar myapp.jar &
將做的工作。那樣的話,它在外殼關閉時仍然會死掉,但是你可以繼續使用你的外殼。
如果你真的想讓它作爲守護進程運行,nohup java -jar myapp.jar &
將完成這項工作。那樣,當殼關閉時它將繼續生存。
如果你希望這是可靠的,你可以準備一個初始化腳本或upstart job definition,或通過Vixie cron(8)
@reboot
說明符來運行它,以使其在啓動時啓動。
只是想指出,這將是一個Unix或Linux機器,而不是Windows。 – Kalyan
鑑於您使用Windows,您可能會考慮Java Service Wrapper。我曾經在一個項目中使用過它。
此外,你可以做「javaw」而不是「java」,它將在沒有控制檯窗口的情況下運行你的程序。這通常是如何運行基於GUI的Java程序的。 http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html – Jim
你的問題不清楚。你想作爲Windows服務運行嗎?或者你想要一個控制檯窗口?或兩者? –
你想在什麼操作系統中實現這個目標? – Marcelo
我在Windows上,作爲一個Windows服務可能是一個很好的解決方案。有沒有辦法將Java控制檯應用程序作爲Windows ServicE運行? – aleroot