2013-04-01 2 views
6

У меня есть приложение Java. Для некоторых задач я запускаю другой экземпляр JVM параллельно, используя ProcessBuilder. то есть мое основное приложение запускает другой экземпляр JVM с использованием Process, а затем оба обмениваются данными с использованием ввода-вывода.Предотвращение появления фонового процесса на доке

Но на Dock на Mac, он показывает, как процесс: enter image description here

Я не хочу, что, как другой процесс делает только серверную работу и не требуется, чтобы показать фронт. Также это риск, поскольку он может вручную принудительно выйти из другого процесса легко.

Что должно быть сделано, чтобы убедиться, что она работает на заднем плане и не показать себя на скамье подсудимых

ответ

10

Если фоновым процессор действительно не нуждается в каких-либо экранных ресурсов, то самое простое, что нужно сделать слишком запустить новый JVM в обезглавленного режиме:

java -Djava.awt.headless=true com.bl.ProcessMain 
6

чтобы включить глобально, а не добавлять опции к каждому процессу, установить переменную JAVA_TOOL_OPTIONS, как это в вашем .bashrc/.zshrc запустить скрипт.

экспорт JAVA_TOOL_OPTIONS = '- Djava.awt.headless = истина'

Ссылка здесь:

http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html

Смежные вопросы