2013-12-09 61 views
2

我有一個64位Java應用程序,我想在32位模式下運行特定的jar應用程序。爲了測試,我已經在一次性類中做了這個:如何在沒有硬編碼路徑的情況下從64位java進程啓動32位java進程

public class Invoke32bit { 

    public static void main(String[] args) 
    { 
     try { 
      Runtime.getRuntime().exec("\"C:\\Program Files (x86)\\Java\\jre7\\bin\\java.exe\" -jar C:\\dev\\test.jar"); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

它的工作原理......但我怎樣才能避免硬編碼java路徑?將使用此應用程序的機器將安裝64位和32位JRE(此應用程序在內部使用,我們不必擔心其他人使用它)

我想過的一種方法的目的是提供一個配置文件,允許用戶輸入64位和32位java的路徑,但是如果有一種方法可以更好地自動執行此操作。

+3

你有沒有想過使用'args'? –

+0

不,我不知道在32位或64位模式下調用'Java'的參數。 – MxyL

+0

我可能誤解了你的觀點。我可以將路徑傳遞給32位可執行文件,但對我來說,它仍然是一種硬編碼(它只是在其他地方進行了編碼)。 – MxyL

回答

1

您擁有java系統屬性java.home,但這隻指向一個安裝,並且從不保證存在32位JRE。

您可以使用其他可用的系統屬性爲其他32位JRE安裝進行「爬網」,但這當然不是很好的證明(如果有人決定將他們的JRE安裝在某些您不想看的地方?它

或者,你可以打包你的軟件在32位JRE和調用一個明顯的缺點是你的發行規模

在系統屬性:。http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

相關主題:possible to force a 64-bit JVM to use 32-bit mode via the argument "-d32"? (這是不可能的)

+0

這些都是值得考慮的好事。我將要求用戶將32位JRE安裝在可預測的位置,並要求安裝64位和32位JRE。 – MxyL

+0

在這種情況下,對於Windows,您只需預測使用不同驅動器號的用戶。這也許會變得棘手,因爲從技術上講,任何驅動器都可以用來安裝軟件。例如,我的C驅動器上沒有安裝java。雖然由您來決定「可預測」的含義。 –

0

閱讀關於Configuration Utilities的Oracle官方教程。

您可以使用屬性,命令行參數和/或環境變量來提及一些方法。