防止后台进程出现在Dock上

Jat*_*tin 7 java macos

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

但在DockMac上,它显示了这两个过程: 在此输入图像描述

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

应该怎么做才能确保它在后台运行并且不会在Dock上显示

Per*_*ion 11

如果你的后端处理器真的不需要任何屏幕资源,那么最简单的事情就是在无头模式下启动新的JVM :

java -Djava.awt.headless=true com.bl.ProcessMain
Run Code Online (Sandbox Code Playgroud)


arc*_*cot 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