2011-06-24 156 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

相关问题