ProcessBuilder中传入的参数returns"Could not find or load main class"

Parameter passing in ProcessBuilder returns "Could not find or load main class"

我有以下代码构建我的 java 命令和 运行s 进程构建器。

String runCommand[] = {"java", ExerciseSelected + " " + Input};
runpb   = new ProcessBuilder(runCommand);  
Process runp = runpb.start();  

输入是由空格分隔的一串输入。目前我有一个 100 的输入,我正在将其传递给我的 java 程序。

当运行宁此returns"Could not find or load main class Exercise 100"

现在我看了另一篇解释如何创建 java 命令调用的 Whosebug 文章。对 processbuilder 的命令调用如下所示

java 练习 100

如果我转到我的 java 应用程序文件夹并且 运行 对相同的 Exercise.class 进行相同的调用,它会在命令提示符下运行。但它不适用于 ProcessBuilder。

我曾尝试将 100 括在引号中,但也没有用。有没有可能我在整理这个命令时遗漏了什么?

您实际上是在尝试 运行

java "Exercise 100"

您需要 两个 个参数:"Exercise" 和“100”,因此您应该将它们作为数组中的不同元素:

String[] runCommand = { "java", exerciseSelected, input };

请注意,如果 input 实际上是 "1 2 3" 这将等同于 运行ning:

java Exercise "1 2 3"

这可能仍然不是您想要的。您可能想先用空格分割 input

(我已经调整了变量名称和 [] 的位置,使其更加地道。)