7

我开发了一个 Java 控制台应用程序,当启动时,打开一个控制台窗口并保持在前台,我想在后台启动该应用程序。

现在我通过这个命令行启动应用程序:

java -jar myapp.jar

有没有办法实现这种行为?更改命令行参数就足够了,或者我需要对我的代码进行一些更改?

4

4 回答 4

13

答案取决于操作系统。

*nix: <your command> &
Windows: (opens a new console): start <your command>
Windows: (doesn't open a new console): start /b <your command>
于 2011-06-24T20:04:16.613 回答
6

如果您在任何基于 unix 的环境中执行此操作,则可以将 & 附加到末尾,这将生成一个新线程并使其在后台运行。

java -jar myapp.jar &
于 2011-06-24T20:00:26.833 回答
4

如果你真的只是想让它在后台运行,java -jar myapp.jar &就可以完成这项工作。这样,当 shell 关闭时它仍然会死掉,但你可以继续使用你的 shell。

如果您真的希望它作为守护程序运行,nohup java -jar myapp.jar &则可以完成这项工作。这样,当 shell 关闭时,它将继续存在。

如果您希望它可靠,您可以准备一个 init 脚本或upstart 作业定义,或通过 Vixiecron(8) @reboot说明符运行它以使其在启动时启动。

于 2011-06-24T20:05:29.953 回答
3

鉴于您使用的是 Windows,您可能会考虑使用Java Service Wrapper。我过去曾在一个项目中使用过它。

于 2011-06-24T20:22:23.503 回答