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 例項的命令即可。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP