我有一个 Java 应用程序。对于某些任务,我使用ProcessBuilder
. 即,我的主应用程序使用 I/O 启动另一个 JVM 实例Process
,然后两者都使用 I/O 进行通信。
但在Dock
Mac 上,它显示了两个过程:
我不希望这样,因为另一个进程只做后端工作,不需要预先显示。这也是一种风险,因为他可以轻松地手动强制退出另一个进程。
应该做些什么来确保它在后台运行并且不会在码头上显示自己
如果您的后端处理器确实不需要任何屏幕资源,那么最简单的做法就是以无头模式启动新的 JVM:
java -Djava.awt.headless=true com.bl.ProcessMain
要全局启用它而不是向每个进程添加选项,请在 .bashrc/.zshrc 启动脚本中像这样设置 JAVA_TOOL_OPTIONS 变量。
导出 JAVA_TOOL_OPTIONS='-Djava.awt.headless=true'
参考这里:
http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html