2013-07-26 50 views
1

我想從Java代碼傳遞兩個參數,以它來啓動一個jar文件推出罐子,我曾嘗試是:Java代碼的參數傳遞給它

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"); 
} 

代碼是完美的發射罐, 但我想使用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)如果路徑環境變量包含64位JVM位置如果我只是給java.exe

我想這下面的代碼,但我無法使用這種方法

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

那麼,有沒有任何其他方式傳遞參數給它推出的jar文件來傳遞參數?

+0

'rundll32 url.dll,FileProtocolHandler'應該只有一個參數,它是你想要協議處理程序的文件的名稱。如果你在調用它時忽略了'arg1'和'arg2'會發生什麼? – mthmulders

+0

java中的Java,這是* inception * ..爲什麼不使用jar作爲依賴項,並在需要時直接從jar中運行main類? – 2013-07-26 10:57:01

+0

@mthmulders:我想將arg1和arg2傳遞給第二個jar文件,沒有第二個jar文件就不能工作。我的整個功能都存在於第二個jar文件 –

回答

1

使用參數'-d32',即 java -d32 -jar jarfile arg1 arg2。

java -help也可以得心應手。