8

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

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

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

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

4

2 回答 2

12

如果您的后端处理器确实不需要任何屏幕资源,那么最简单的做法就是以无头模式启动新的 JVM:

java -Djava.awt.headless=true com.bl.ProcessMain
于 2013-04-01T12:04:54.893 回答
6

要全局启用它而不是向每个进程添加选项,请在 .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

于 2013-07-31T14:56:13.180 回答