Java 使用ProcessBuilder创建一个基本的在线评测系统

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: 错误: 预期分号
      System.out.println("欢迎来到Tutorialspoint!!")
                                                       ^
1 错误

步骤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");
   }
}

将上面的java文件编译成“javac Process.java”,然后在你系统的命令行界面中使用“java Process”运行。

输出

Successfully Executed
Check your Output file

输出快照

我们可以在output.txt文件中看到“OnlineJudge.java”的输出结果-

Java 使用ProcessBuilder创建一个基本的在线评测系统

一次我们故意在第3行末尾漏掉了分号,以检查错误日志是否被重定向到error.txt文件中。你可以在这里看到错误日志。

Java 使用ProcessBuilder创建一个基本的在线评测系统

结论

我们通过介绍在线评测系统及其使用案例来开始了本文。随后,我们了解了ProcessBuilder类及其用法。下一节讨论了使用ProcessBuilder创建在线评测平台的所有必要步骤。这个平台不仅可以执行Java程序,还可以执行其他编程语言,如C和C ++。我们只需要更改传递给ProcessBuilder实例的命令即可。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程