Java 主要参数被识别为主要 class

Java main argument identified as main class

我有一个问题 运行使用参数作为来自另一个 Java 管理器进程的命令的 Java 进程。假设我有一个 main class Main,我想将 0 作为参数传递(对于 javaw.exe 它只是论点之一)。为了说明,如果我在控制台中 运行 类似这样的东西,它会起作用:

javaw.exe -X... -D... -cp ... Main 0

This 运行s Main with the argument 0. 现在,从我的管理器应用程序到 运行 这个我使用以下行:

Process p = Runtime.getRuntime().exec(new string[] {
    "cmd.exe", "/c", "javaw.exe", "-X... -D... -cp ... Main", "0"});

我在 err 中得到以下输出:

Error: Could not find or load main class 0

换句话说,JVM将0识别为主class。
使用不同的 exec 重载不是推荐的选项(它是通用基础结构)。

好吧,您将整个“-X...-D...-cp ...Main”作为单个参数传递。相反,您应该:

Process p = Runtime.getRuntime().exec(new string[] {
    "cmd.exe", "/c", "javaw.exe", "-X...", "-D...", "-cp", "...", "Main", "0"});