2011-06-24 196 views
6

我開發了一個Java控制檯應用程序,它在啓動時打開控制檯窗口並保留在前臺,我想在後臺啓動該應用程序。將Java控制檯應用程序作爲守護程序運行(後臺)

現在我通過這個命令行啓動應用程序:

java -jar myapp.jar 

有沒有辦法實現這種行爲? 這足以改變命令行參數或我需要對我的代碼做一些更改?

+0

你的問題不清楚。你想作爲Windows服務運行嗎?或者你想要一個控制檯窗口?或兩者? –

+1

你想在什麼操作系統中實現這個目標? – Marcelo

+0

我在Windows上,作爲一個Windows服務可能是一個很好的解決方案。有沒有辦法將Java控制檯應用程序作爲Windows ServicE運行? – aleroot

回答

12

答案取決於操作系統。

*nix: <your command> & 
Windows: (opens a new console): start <your command> 
Windows: (doesn't open a new console): start /b <your command> 
6

如果你在unix的基礎上做了這個,那麼你可以在最後添加&,這會產生一個新線程並保持它在後臺運行。

java -jar myapp.jar & 
4

如果你真的只是希望它在後臺運行,java -jar myapp.jar &將做的工作。那樣的話,它在外殼關閉時仍然會死掉,但是你可以繼續使用你的外殼。

如果你真的想讓它作爲守護進程運行,nohup java -jar myapp.jar &將完成這項工作。那樣,當殼關閉時它將繼續生存。

如果你希望這是可靠的,你可以準備一個初始化腳本或upstart job definition,或通過Vixie cron(8)@reboot說明符來運行它,以使其在啓動時啓動。

+0

只是想指出,這將是一個Unix或Linux機器,而不是Windows。 – Kalyan

3

鑑於您使用Windows,您可能會考慮Java Service Wrapper。我曾經在一個項目中使用過它。

+3

此外,你可以做「javaw」而不是「java」,它將在沒有控制檯窗口的情況下運行你的程序。這通常是如何運行基於GUI的Java程序的。 http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html – Jim

相關問題