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