Javaで端末エミュレータを選択する

Javaで端末エミュレータを選択する

私は、実行時に別々のスタンドアロン端末でいくつかのコマンドを実行する必要があるプラットフォームに依存しないJavaコンソールツールを作成しています。

ただし、gnome-terminal または xterm のどちらを使用するかを知る必要があります。つまり、特定のシステムで利用可能です。利用可能なさまざまなLinuxバリアントがあるためです。私は少なくとも最も明白なものを支持したいと思います。

通常、JavaではSystem.getProperty("os.name")これが返されますが、LinuxUbuntuかそれ以外のLinuxのバリエーションかはわかりません。そのため、実行時にどの端末を起動するかを知ることは困難です。 gnome-terminalかxtermか、私が知らないものがあるかどうか。

ワークグループ:

Windowsの場合:

cmd /c start java -jar jarTool arguments

Ubuntuでは:

gnome-terminal --execute java -jar jarTool arguments

または

xterm -e java -jar jarTool arguments

Runtime.getRuntime().exec(args or commands)また、より多くの情報を提供するために、実行時にJavaプログラムで実行される端末を使用しています。

答え1

Linuxで使用するターミナルプログラムを決定する簡単な方法はありません。配布情報がある場合でも、基本的なGUIターミナルプログラムをアンインストールまたはアンインストールすることなく、他のプログラムをインストールできます。一般に、アプローチは、一般的に使用される端末プログラムのリストを取得し、使用可能な最初のプログラムを見つけることです。たとえば、virtualbox Linux ゲストが利用可能な端末を検索する方法は次のとおりです。

GUESS_XTERMS="xterm rxvt dtterm eterm Eterm kvt konsole aterm"
for a in $GUESS_XTERMS; do
  if type $a >/dev/null 2>&1; then
    XTERM=$a
    break
  fi
done

答え2

コマンドを実行するには、次のコマンドを使用することをお勧めします。 /Bin/Bash <terminal command> これはすべてのLinuxディストリビューションに適用されます。

関連情報