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