0

私たちのチームのプロセスの 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 ファイルを読み取ります。今、私は次のクエリを持っています:

  1. プロセスはバックグラウンドで実行され、監視するには、タスク マネージャーで確認する必要がありました。このプロセスをフォアグラウンドで実行する方法はありますか。
  2. プログラムがエラーになる場合があります。waitfor()これは、出力に基づいてエラーをキャプチャする正しい方法ですか。現在のロジックは値を表示しただけです[適切なエラーメッセージを表示するために後で拡張します]
  3. これは、この要件を処理するための最善の方法ですか [開発段階であるため、現時点では基本的な冗長性/余分な処理を無視してください]
  4. 実行する一部のプログラムには、管理者権限が必要です。そのために追加のコードが必要ですか
  5. 他に気をつけることは??
4

0 に答える 0