通过向jar传递参数来启动jar的java代码

通过向jar传递参数来启动jar的java代码,java,jar,32bit-64bit,Java,Jar,32bit 64bit,我想通过从java代码向jar文件传递两个参数来启动jar文件,我尝试的是: File jarFile = new File("path/to/jar/file"); if ((jarFile).exists()) { String[] command = new String[5]; command[0] = "java.exe"; command[1] = "-jar";

我想通过从java代码向jar文件传递两个参数来启动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) 如果path环境变量包含64位JVM位置(如果我只给出java.exe),该怎么办?

我尝试了下面的代码,但无法使用此方法传递参数

String command = {"rundll32 url.dll,FileProtocolHandler ", jarFile  + "" , arg1, arg2}
Process p = Runtime
                   .getRuntime()
                   .exec(command);

那么,有没有其他方法通过向jar文件传递参数来启动它呢?

使用参数'-d32',即。 java-d32-jar文件arg1 arg2


java-help也很方便。

使用参数'-d32',即。 java-d32-jar文件arg1 arg2


java-帮助也很方便。

rundll32 url.dll,FileProtocolHandler
应该只有一个参数,即需要协议处理程序的文件名。如果调用时省略了
arg1
arg2
,会发生什么?Java中的Java,这是inception。。为什么不使用jar作为依赖项,并在需要时直接从jar运行主类?@mthmulders:我希望arg1和arg2被传递到第二个jar文件,没有第二个jar文件,第二个jar文件就无法工作。我的全部功能都在第二个jar文件中jar@RC. 我想我没有正确地解释我的问题,这里有两个jar文件,jar1位于本地,另一个(jar2)在用户单击网页中给出的链接时使用Java web start下载,因此jar2将根据用户按下的链接向jar1传递2个参数,但在本地我有32位和64位JVM,我希望jar2只使用32位JVM启动!,因为我所有的驱动程序都是32位的!。但用户可能已经在任何他想要的地方安装了JVM,所以我不能像上面提到的那样硬编码路径,即使我设置了path变量,但它是易受攻击的,不想依赖它。@SaraSaeed:是的,如果你使用的是32位机器,那么安装的Java也只会是32位的,所以如果你运行jar就没有问题了。但问题是当你们在64位机器上启动jar时,如果您明确希望使用32位JVM启动jar文件,那么将有两个步骤:
1)设置环境变量,使其指向32位JVM
2)从包含jar文件的文件夹中的命令提示符键入java-d32-jar jarName.jar,FileProtocolHandler
应该只有一个参数,即需要协议处理程序的文件名。如果调用时省略了
arg1
arg2
,会发生什么?Java中的Java,这是inception。。为什么不使用jar作为依赖项,并在需要时直接从jar运行主类?@mthmulders:我希望arg1和arg2被传递到第二个jar文件,没有第二个jar文件,第二个jar文件就无法工作。我的全部功能都在第二个jar文件中jar@RC. 我想我没有正确地解释我的问题,这里有两个jar文件,jar1位于本地,另一个(jar2)在用户单击网页中给出的链接时使用Java web start下载,因此jar2将根据用户按下的链接向jar1传递2个参数,但在本地我有32位和64位JVM,我希望jar2只使用32位JVM启动!,因为我所有的驱动程序都是32位的!。但用户可能已经在任何他想要的地方安装了JVM,所以我不能像上面提到的那样硬编码路径,即使我设置了path变量,但它是易受攻击的,不想依赖它。@SaraSaeed:是的,如果你使用的是32位机器,那么安装的Java也只会是32位的,所以如果你运行jar就没有问题了。但问题是,当您在64位机器中启动jar时,如果您明确希望使用32位JVM启动jar文件,那么将有两个步骤:
1)设置环境变量,使它们指向32位JVM
2),从包含jar文件的文件夹中键入命令提示符java-d32-jar jarName.jar