我在使用参数作为来自另一个Java管理器进程的命令运行Java进程时遇到问题。假设我有一个主类 Main ,我想传递 0 作为参数(对于javaw.exe,它只是其中一个参数)。为了说明,如果我在控制台中运行这样的东西,它可以工作:
javaw.exe -X... -D... -cp ... Main 0
这将使用参数0运行Main。现在,要从我的经理应用程序运行它,我使用以下行:
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标识为主类 使用不同的exec重载不是推荐的选项(它是通用基础结构)。
答案 0 :(得分:7)
嗯,你正在通过整个" -X ... -D ... -cp ... Main"作为一个论点。相反,你应该:
Process p = Runtime.getRuntime().exec(new string[] {
"cmd.exe", "/c", "javaw.exe", "-X...", "-D...", "-cp", "...", "Main", "0"});