java - 使用ProcessBuilder运行多个程序

标签 java processbuilder

我正在尝试为本学期教授的 Java 编程类(class)创建一个自动评分器。自动评分器的基本思想是,它将我的测试人员的 .class 文件的副本放置在与学生的交作业相同的位置(每个交作业都在自己的文件夹中)。它将在文本文件中报告结果并将数据返回给我。

我遇到的问题是我无法让 ProcessBuilder 执行我的测试器类,并且我尝试了各种不同的方式来输入命令,但我不确定正确的命令是什么。这是代码:

public...main(String[] args){
///Code not relevant ommitted
    Runtime runtime = Runtime.getRuntime();

    for (String person : uniqueIds) {
        File currentLoc = new File(HW_ID + "/" + person);
        ProcessBuilder g = new ProcessBuilder("bash", "-c",
                "java", " -cp ", currentLoc.getAbsolutePath(),
                " Grader");
        Process process = g.start();
        process.waitFor();
    }
}

“uniqueIds”是一个字符串数组,其中包含每个学生的 uniqueId,这是他们的作业所在的文件夹的名称。 “HW_ID”是一个常量,它是所有学生的交集所在文件夹的名称。因此文件结构为:HW_ID/uniqueID/

“Grader”是我的程序的名称,用于对提交进行评分。如何使用 ProcessBuilder 启动位于指定文件位置的 Grader 程序?

编辑:我在此使用 Mac,但如果 Windows 的代码不同,请列出两者。谢谢!

最佳答案

您需要用逗号分隔进程参数,而不是使用 +。否则,它将它们连接成单个参数“java-cp”...

... g = new ProcessBuilder("bash", "-c", "java", "-cp", ...

关于java - 使用ProcessBuilder运行多个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269820/

相关文章:

java - JPA 和数据库 Flex 字段

java - ProcessBuilder 重定向输出

java - 一个人不只是简单地进入 ProcessBuilder

java - 如何使用 Process Builder 在 Java 中运行 NPM 命令

java - 示例程序参数

java - Spring 批处理 : Reading data from one source but writing different data to 2 separate files

java - Java 服务器/客户端中的编码和解码

java - Crawler4j,一些网址被毫无问题地抓取而另一些则根本没有被抓取

java - 进程挂起 waitFor() 方法

java - 无法模拟 ProcessBuilder