我有以下代码来构建我的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,但也没有用。是否有可能在拼凑这个命令时我错过了什么?
答案 0 :(得分:2)
你有效地试图运行
java "Exercise 100"
你想要两个参数:“Exercise”和“100”,所以你应该将它们作为数组中的不同元素:
String[] runCommand = { "java", exerciseSelected, input };
请注意,如果input
实际上是“1 2 3”,则这相当于运行:
java Exercise "1 2 3"
仍然可能不是你想要的。您可能希望先用空格分割input
。
(我已将[]
的变量名称和位置调整为更加惯用。)