【问题标题】:Parameter passing in ProcessBuilder returns "Could not find or load main class"在 ProcessBuilder 中传递的参数返回“找不到或加载主类”
【发布时间】:2018-03-22 14:47:22
【问题描述】:

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

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

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

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

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

java练习100

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

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

【问题讨论】:

    标签: java parameter-passing processbuilder


    【解决方案1】:

    你正在有效地尝试跑步

    java "Exercise 100"
    

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

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

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

    java Exercise "1 2 3"
    

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

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

    【讨论】:

    • 我还尝试了一种在普通数组上使用 ArrayList 的新方法,因为 ProcessBuilder 也读取 ArrayList。它使添加多个输入变得更加容易。
    • @DaveK:是的,这样会更简单。
    猜你喜欢
    • 2016-11-27
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2016-09-23
    相关资源
    最近更新 更多