ProcessBuilder中的参数传递返回“无法找到或加载主类”

时间:2018-03-22 14:47:22

标签: java parameter-passing processbuilder

我有以下代码来构建我的java命令并运行流程构建器。

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

输入是由空格分隔的输入字符串。目前我的输入为100,我将传递给我的java程序。

运行时,它返回“无法找到或加载主类练习100”

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

java Exercise 100

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

我试图在引号中附上100,但也没有用。是否有可能在拼凑这个命令时我错过了什么?

1 个答案:

答案 0 :(得分:2)

你有效地试图运行

java "Exercise 100"

你想要两个参数:“Exercise”和“100”,所以你应该将它们作为数组中的不同元素:

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

请注意,如果input实际上是“1 2 3”,则这相当于运行:

java Exercise "1 2 3"

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

(我已将[]的变量名称和位置调整为更加惯用。)