Java アプリケーションを実行するとき、それに与えられるプロセス名は通常、java.exe
またはjavaw.exe
です。しかし、アプリケーションの名前で呼び出されるようにするにはどうすればよいでしょうか?
10 に答える
これらのメソッドは、多くの Java プロセスが実行されているサーバーに適しています。また、(jps を使用せずに) 正しい jvm をすばやく見つける方法が必要な場合に適しています。アプリケーションの場合は、launch4j または別のラッパーが適していると思います。
Unix では、シェル sript から起動する場合 (少なくとも bash の場合、および他のまともなシェルの場合)、次を使用できます。
exec -a goodname java ...
を起動java
し、0 番目の引数として「goodname」を渡します。これは、プロセス名として表示されますps
。
おそらくより良い代替手段 ( にも機能するようですtop
) は、シンボリックリンクを作成することです: ln -s /usr/bin/java /usr/local/bin/kallekula
.
Windows のショートカットではうまくいきませんが、Windows Vista/7 は を使用したシンボリック リンクをサポートしていmklink
ます。それはうまくいくかもしれませんが、私はテストしていません。exec -a
Windowsのcygwin bashでも動作するかどうかはわかりません。
launch4jを確認してください。これは、実行可能ファイル名を割り当てることができる実行可能ラッパーです。
これは Windows に固有のものです。taskkill
を使用して特定の Java プログラムを強制終了する必要があるという同じ問題に直面していました。Java プログラムを実行すると、tasklistに Image name がjava.exeに設定された同じプログラムが表示されました。ただし、taskkill /F java.exeを使用して強制終了すると、意図したもの以外のすべての Java アプリケーションが停止しますが、これは必要ありません。
したがって、次を使用して同じ Java プログラムを実行します。
"MyProgramName" java java-program.. を開始します。
ここでstartコマンドは新しいウィンドウを開き、ウィンドウのタイトルをMyProgramNameに設定して Java プログラムを実行します。
この Java プログラムを強制終了するには、次の taskkill コマンドを使用します。
taskkill /fi "MyProgramName"
Java プログラムは強制終了されるだけです。残りは影響を受けません。
Sun JDK を使用している場合は、「jps」コマンド ライン ツールを使用して、ボックスで実行されている Java プロセスの詳細なリストを取得することもできます。
あなたが本当に求めているのは、後で正しいプロセスを終了する方法であると仮定すると、別の解決策は次のとおりです。
実行ps -ef | grep java
すると、次のようなリストが表示されます。
mruser 7518 7505 4 11:37 pts/3 00:00:00 /usr/bin/java -classpath MRD3030_Linked.jar peralex.MyApp
次にpkill -f peralex.MyApp
、正しいプロセスを強制終了します。
すべての種類の exec が -a フラグをサポートしているわけではありません。そうでない場合、argv0プログラムは同様のことを行います。