gpt4 book ai didi

java - 使用 ProcessBuilder 运行多个程序

转载 作者:行者123 更新时间:2023-11-30 09:12:56 24 4
gpt4 key购买 nike

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

我遇到的问题是我无法让 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”是一个常量,是所有学生的turnin set所在文件夹的名称。所以文件结构是:HW_ID/uniqueID/

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

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

最佳答案

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com