3

シェルスクリプトを実行しているMacアプリケーションバンドルがあります。シェルスクリプトは、Javaプログラム1を呼び出していくつかの処理を実行してから、メインのJavaアプリケーションを起動します。このプロセスでは、シェルスクリプト用にDockに1つのアイコンが残り、アプリケーションフォルダーの名前が表示されます。Javaプログラム用にDockに1つのアイコンが残ります。

シェルスクリプトアプリケーションのアイコンが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 にシェル スクリプト アイコンを表示したくない場合は、少なくともメイン アプリケーションの 2 番目の Java プロセスを次のexecモードで開始する必要があります。

exec java -jar XXX

execつまり、現在実行中のシェルを新しいプロセスに「置き換え」ます。これはまさにあなたが望むものです。

Java 6/7用の私のuniversalJavaApplicationStubは同じ方法でそれを行っており、うまく動作します:)

于 2014-03-21T11:33:51.093 に答える
0

たぶん、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

もう1つのオプションは、Terminal.appを使用せずに、GUIを操作せずにUnixレベルのsystem(3)呼び出しなどを使用して、シェルスクリプトを直接実行することです。

于 2010-01-29T11:00:42.983 に答える