Сценарий оболочки Mac, работающий на Java, помещает две иконки в док - PullRequest
3 голосов
/ 28 января 2010

У меня есть пакет приложений Mac, который выполняет сценарий оболочки. Сценарий оболочки вызывает java-программу 1 для выполнения некоторых задач, а затем запускает основное java-приложение. Этот процесс оставляет один значок в Dock для сценария оболочки, который показывает имя из папки приложения, и один значок в Dock для Java-программы.

Есть ли способ предотвратить отображение значка приложения сценария оболочки в Dock?

Ответы [ 3 ]

6 голосов
/ 28 января 2010

Да, при условии, что первая Java-программа может работать без головы :

java -Djava.awt.headless=true ...

Добавление: если вы используете JavaApplicationStub, диагностический вывод процесса запуска может быть получен следующим образом:

$ export JAVA_LAUNCHER_VERBOSE
$ ./YourBundle.app/Contents/MacOS/JavaApplicationStub
1 голос
/ 21 марта 2014

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

exec java -jar XXX

exec означает, что он "заменит" вашу текущую оболочку новым процессом. Это швы именно то, что вы хотите.

My universalJavaApplicationStub для Java 6/7 делает то же самое и работает просто отлично:)

0 голосов
/ 29 января 2010

Может быть, вы можете запустить программу Java в фоновом режиме, а затем выйти из сценария оболочки? Примерно так:

#!/bin/sh
first_java_program            # Synchronous, wait for it
nohup second_java_program &   # Run in the background, detach from terminal
exit 0                        # Indicate clean exit

Другим вариантом может быть запуск сценария оболочки без Terminal.app, но напрямую с помощью системного вызова уровня 3 (Unix) или чего-то подобного, без взаимодействия с графическим интерфейсом.

...