2014-02-27 65 views
4

如何指定爲了運行我創建的某個java應用程序,您需要在系統上安裝32位JRE?進一步如何指定java應用程序使用32位JRE而不是64位JRE(如果它們都安裝的話)?使罐子運行在32位jre

背景:

我已經創建了一個使用第三方僅32位庫的應用程序。該應用程序無法在64位JRE中運行。

我打算將這個應用程序分發到我公司的很多計算機上,所以我需要能夠在代碼或導出過程中指定所需的JRE。

我使用eclipse,開普勒來開發和構建java應用程序。

+0

如果可能,請獲取您的庫的源代碼併爲64位機器構建。 :) 把它丟去外面。 – Qix

回答

2

了Java的想法總是一次編譯,到處運行,而無需考慮操作系統,CPU架構等,所以你可能會走向這裏的錯誤方向。

但是,這裏有一些系統屬性,你可能/沒有幫助。 Java的熱點(TM)64位服務器VM

  • 陽光:我已經列出的屬性鍵和值我有,當我檢查

    • java.vm.name(我Win7上運行64 JDK的Oracle) .arch.data.model:64
    • sun.cpu.isalist:AMD64

    要使用到這些只是做

    String vmname = System.getProperty("java.vm.name"); 
    
  • +1

    對於Java字節碼,如果JRE是32位,64位或其他內容,則沒有區別,但是Reid在他的問題中提到他使用的是32位本機庫,因此他的程序只能在32位JVM; 64位JVM無法加載32位本機庫。 – Jesper

    0

    您不能直接在Java中執行此操作,因爲此時您處於正在運行的JVM中。我的解決方案是編寫一個dos批處理腳本來設置JAVA_HOME,並在PATH的前面添加%JAVA_HOME%\bin。例如,我有sethome.bat其中包含

    @echo off 
    set "JAVA_HOME=c:\Program Files (x86)\Java\jre6" 
    set "PATH=%JAVA_HOME%\bin;%PATH%" 
    

    然後我用

    call "%SERVICE_HOME%\sethome" 
    "%JAVA_HOME%\bin\java" -version 
    echo If this does not look correct press CTRL-C to cancel otherwise 
    pause 
    
    0

    你一般不能確保什麼程序運行你的jar。我可以將罐子傳遞給acroreadzip或其他任何東西,而且你無法對此做任何事情。

    所以,我只是試圖加載庫,並做適當的錯誤/異常處理。誰知道?也許你的客戶已經用64位版本取代了這個庫,但你不知道它?所以,這一點:加載,如果它不會以優美的恐怖信息中止是唯一明智的事情。