我开发了一个 Java 控制台应用程序,当启动时,打开一个控制台窗口并保持在前台,我想在后台启动该应用程序。
现在我通过这个命令行启动应用程序:
java -jar myapp.jar
有没有办法实现这种行为?更改命令行参数就足够了,或者我需要对我的代码进行一些更改?
我开发了一个 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 &
就可以完成这项工作。这样,当 shell 关闭时它仍然会死掉,但你可以继续使用你的 shell。
如果您真的希望它作为守护程序运行,nohup java -jar myapp.jar &
则可以完成这项工作。这样,当 shell 关闭时,它将继续存在。
如果您希望它可靠,您可以准备一个 init 脚本或upstart 作业定义,或通过 Vixiecron(8)
@reboot
说明符运行它以使其在启动时启动。
鉴于您使用的是 Windows,您可能会考虑使用Java Service Wrapper。我过去曾在一个项目中使用过它。