3

我有一个执行 shell 脚本的 Mac 应用程序包。shell 脚本调用 java 程序 1 来做一些事情,然后启动主 java 应用程序。此过程在 Dock 中为显示应用程序文件夹名称的 shell 脚本留下一个图标,在 Dock 中为 java 程序留下一个图标。

有什么方法可以防止 shell 脚本应用程序图标显示在 Dock 中?

4

3 回答 3

6

是的,假设第一个 Java 程序可以无头运行:

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

附录:如果您正在使用JavaApplicationStub,则可能会获得启动过程的诊断输出,如下所示:

$ 导出 JAVA_LAUNCHER_VERBOSE
$ ./YourBundle.app/Contents/MacOS/JavaApplicationStub
于 2010-01-28T00:58:00.340 回答
1

如果您不想在 Dock 中显示 shell 脚本图标,则需要至少启动主应用程序的第二个 java 进程,exec模式为:

exec java -jar XXX

exec意味着,它将用新进程“替换”您当前正在运行的 shell。这完全符合您的要求。

我的universalJavaApplicationStub for Java 6/7 以同样的方式做,它工作得很好:)

于 2014-03-21T11:33:51.093 回答
0

也许您可以在后台运行 Java 程序,然后退出 shell 脚本?像这样的东西:

#!/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 的情况下运行 shell 脚本,但直接使用 Unix 级别的 system(3) 调用或类似的东西,没有 GUI 交互。

于 2010-01-29T11:00:42.983 回答