Java 中使用 ProcessBuilder 建立一個基本的線上評測系統
線上評測系統是一個用於編譯、執行和評估給定問題程式設計解決方案的平臺。它廣泛用於解決問題和組織程式設計比賽。要使用 ProcessBuilder 類在 Java 中建立一個基本的線上評測系統,請定義一個 ProcessBuilder 例項,並將程式名稱和命令作為引數指定。
ProcessBuilder 類用於建立和管理作業系統程序。它允許我們連結多個程序,其中一個程序的輸出可以用作另一個程序的輸入。此外,它還提供各種內建方法,例如 redirectOutput()、redirectInput()、redirectError() 等,以有效地處理程序。
使用 ProcessBuilder 建立線上評測系統的步驟
我們需要按照以下邏輯和組織方式遵循一系列步驟:
步驟 1
建立一個名為“OnlineJudge.java”的 Java 原始碼檔案。然後,將以下程式碼複製並貼上到該檔案中。
示例
public class OnlineJudge { public static void main(String[] args) { System.out.println("Welcome to Tutorialspoint!!") } }
輸出
OnlineJudge.java:3: error: ';' expected
System.out.println("Welcome to Tutorialspoint!!")
^
1 error
步驟 2
在您的本地系統中建立兩個文字檔案。一個用於儲存程式碼編譯和執行過程中遇到的錯誤。另一個用於儲存程式碼成功執行後的輸出。
我們建立並命名了以下檔案:
“error.txt”
“output.txt”
步驟 3
現在,建立另一個名為“Process.java”的 Java 檔案。將以下程式碼複製並貼上到該檔案中
讓我們討論一下程式碼的演算法。
演算法
建立一個“ProcessBuilder”類的例項,並將用於編譯 Java 程式檔案的命令作為引數傳遞給它的建構函式。編譯命令為“javac className.java”。
將“error.txt”檔案的路徑作為引數傳遞給“File”類的建構函式。我們將使用“redirectError()”方法將錯誤重定向到此檔案。
使用內建方法“start()”啟動第一個程序。
再次建立一個“ProcessBuilder”類的例項,並將用於執行 Java 程式檔案的命令作為引數傳遞給它的建構函式。執行命令為“java className”。
將“output.txt”檔案的路徑作為引數傳遞給“File”類的建構函式。我們將使用“redirectOutput()”方法將輸出重定向到此檔案。
使用內建方法“start()”開始執行第二個程序。
示例
import java.io.*; import java.util.*; public class Process { public static void main(String[] args) throws IOException, InterruptedException { // To compile the code with the javac command ProcessBuilder pb1 = new ProcessBuilder("javac", "OnlineJudge.java"); // To print the error into error file File error = new File("D:/Java Programs/error.txt"); pb1.redirectError(error); pb1.start(); // starting the process // Execute the code using the java.classname command ProcessBuilder pb2 = new ProcessBuilder("java", "OnlineJudge"); // To print the output into output file File output = new File("D:/Java Programs/output.txt"); pb2.redirectOutput(output); pb2.start(); // starting the process System.out.println("Successfully Executed"); System.out.println("Check your Output file"); } }
使用“javac Process.java”編譯上述 Java 檔案,並在系統命令列介面上使用“java Process”執行。
輸出
Successfully Executed Check your Output file
輸出快照
我們可以在 output.txt 檔案中看到“OnlineJudge.java”的輸出 -

一旦我們故意在第 3 行末尾省略分號以檢查錯誤日誌是否被重定向到 error.txt 檔案。您可以在此處檢視錯誤日誌。

結論
我們從介紹線上評測系統及其用例開始本文。稍後,我們瞭解了 ProcessBuilder 類及其用途。下一部分討論了使用 ProcessBuilder 建立線上評測平臺所需的所有步驟。此平臺不僅可以執行 Java 程式,還可以執行其他程式語言,如 C 和 C++。我們只需要更改傳遞給 ProcessBuilder 例項的命令即可。