32

私はJAVAプログラムからFedora16のターミナルでコマンドを実行する必要があります。使ってみました

Runtime.getRuntime().exec("xterm"); 

しかし、これはターミナルを開くだけで、コマンドを実行できません。

私もこれを試しました:

OutputStream out = null;
Process proc = new ProcessBuilder("xterm").start();
out = proc.getOutputStream();  
out.write("any command".getBytes());  
out.flush(); 

それでも私はターミナルを開くことしかできませんが、コマンドを実行することはできません。それを行う方法について何かアイデアはありますか?

4

6 に答える 6

44

bash次のような実行可能ファイルを使用して実行する必要があります。

Runtime.getRuntime().exec("/bin/bash -c your_command");

更新: xavで 提案されているように、代わりにProcessBuilderを使用することをお勧めします。

String[] args = new String[] {"/bin/bash", "-c", "your_command", "with", "args"};
Process proc = new ProcessBuilder(args).start();
于 2013-03-12T08:31:10.397 に答える
6

他の人が言ったように、xterm なしで外部プログラムを実行できます。ただし、端末ウィンドウで実行したい場合、たとえばユーザーが操作できるようにする場合は、xterm を使用すると、実行するプログラムをパラメーターとして指定できます。

xterm -e any command

Java コードでは、これは次のようになります。

String[] command = { "xterm", "-e", "my", "command", "with", "parameters" };
Runtime.getRuntime().exec(command);

または、ProcessBuilder を使用して:

String[] command = { "xterm", "-e", "my", "command", "with", "parameters" };
Process proc = new ProcessBuilder(command).start();
于 2013-03-12T08:54:23.790 に答える
3

この質問はかなり古いことは知っていますが、ProcessBuilder API をカプセル化するライブラリを次に示します。

于 2017-09-07T02:56:59.540 に答える