13

ProcessBuilder クラスを使用して Java 経由で外部プロセスを開始しようとしていますが、それで十分です。現在、次のコマンドを使用して実行しています:

new ProcessBuilder("java", "-jar", jarfile, args);

やりたいことはこれだけですが、優先度を下げてプロセスを開始します。私のプログラムは現在 Windows でのみ実行されているため、ウィンドウ固有のソリューションで問題ありません。一部の調査では、「開始」コマンドを使用することが示唆されていますが、Java からこれを実行しようとすると、認識されないコマンドであるという例外が発生します (同じコマンドが cmd.exe から機能します)。

Java (必要に応じて Windows 固有) からbelownormal優先的にプロセスを起動する方法を知っている人はいますか?

4

1 に答える 1

16

開始コマンドを使用します。ウィンドウに依存しますが、必要なことは行います。これにはクロスプラットフォームの方法がないことを読みました。

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal javaws -version");
System.out.println("Before start");
Process start = pb.start();

入力側のエラー ストリームを読み取ることもできます。

待機するには:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.waitFor();
System.out.println("Done");

早期破壊の場合:

ProcessBuilder pb = new ProcessBuilder("cmd", "/C start /B /belownormal /WAIT javaws -sdasd");
System.out.println("Before start");
Process start = pb.start();
start.destroy();
start.waitFor();

System.out.println("Done");
于 2011-06-03T06:52:34.737 に答える