私たちのチームのプロセスの 1 つが自動化されるように、Java ユーティリティを 1 つ作成する必要があります。既存のプロセスは、実行可能ファイルを呼び出して、業務処理を順番に実行します。私はこれのために小さなプログラムを書きました
FileInputStream fstream;
try {
String [] cmd = new String[3];
if(System.getProperty("os.name").toLowerCase().contains("win")){
cmd[0] = "cmd.exe";
cmd[1] = "/C";
} else{
cmd[0] = "/bin/sh";
cmd[1] = "-c";
}
fstream = new FileInputStream("C:\\JavaProgram.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String FileLine,FileLine1;
//Read File Line By Line
while ((FileLine = br.readLine()) != null)
{
cmd[2]=FileLine;
ProcessBuilder proc = new ProcessBuilder(cmd);
Process p = null;
proc.redirectErrorStream(true);
System.out.println("Starting Process "+ FileLine);
p = proc.start();
BufferedReader br1 = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((FileLine1 = br1.readLine()) != null)
{
System.out.println("Output"+ FileLine1);
}
int exitValue = p.waitFor();
System.out.println("\nExit Value is " + exitValue);
}
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
プログラムは、順番に実行されるプログラムのリストを含む JavaProgram ファイルを読み取ります。今、私は次のクエリを持っています:
- プロセスはバックグラウンドで実行され、監視するには、タスク マネージャーで確認する必要がありました。このプロセスをフォアグラウンドで実行する方法はありますか。
- プログラムがエラーになる場合があります。
waitfor()
これは、出力に基づいてエラーをキャプチャする正しい方法ですか。現在のロジックは値を表示しただけです[適切なエラーメッセージを表示するために後で拡張します] - これは、この要件を処理するための最善の方法ですか [開発段階であるため、現時点では基本的な冗長性/余分な処理を無視してください]
- 実行する一部のプログラムには、管理者権限が必要です。そのために追加のコードが必要ですか
- 他に気をつけることは??