我想通过从java代码传递两个参数来启动一个jar文件,我尝试的是:
File jarFile = new File("path/to/jar/file");
if ((jarFile).exists()) {
String[] command = new String[5];
command[0] = "java.exe";
command[1] = "-jar";
command[2] = jarFile + "";
command[3] = "arg1";
command[4] = "arg2";
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
} else {
System.out.println("File is not available");
}
代码非常适合启动 jar,但我想使用 32 位 JVM 启动 jar 文件,因为我的驱动程序只有 32 位。
而且我的机器包含 32 位和 64 位 JVM,为了使用 32 位 JVM 启动 jar 我可以具有硬编码的 java.exe 位置,例如
command[0] = "C:\\Program Files (x86)\\Java\\jdk1.7.0_25\\bin\\java.exe"
但是
1)如果最终用户在其他位置安装了 java 怎么办?
2)如果我只给java.exe路径环境变量包含 64 位 JVM 位置怎么办?我尝试了下面的代码,但我无法使用此方法传递参数
String command = {"rundll32 url.dll,FileProtocolHandler ", jarFile + "" , arg1, arg2}
Process p = Runtime
.getRuntime()
.exec(command);
那么有没有其他方法可以通过传递参数来启动 jar 文件呢?