防止后台进程出现在Dock上

时间:2013-04-01 11:53:00

标签: java macos

我有一个Java应用程序。对于某些任务,我使用ProcessBuilder并行运行另一个JVM实例。即我的主应用程序使用Process启动另一个JVM实例,然后使用I / O进行通信。

但是在Mac上的Dock上,它显示了以下两个过程: enter image description here

我不希望这样,因为其他进程只执行后端工作而不需要预先显示。这也是一种风险,因为他可以轻松地手动强制退出另一个过程。

应该做些什么来确保它在后台运行并且不会在Dock上显示

2 个答案:

答案 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