簡體   English   中英

確定用於從Java程序執行過程的運行時系統

[英]Determine runtime system for process execution from java program

我正在嘗試從Java程序調用本機可執行文件。 我有三個exe文件,一個用於win32,另一個用於32位linux,第三個用於64位linux,現在,在我可以調用正確的可執行文件之前,我需要確定正在運行哪個平台程序。 我可以通過簡單地獲取“ os.name”系統屬性來確定操作系統,但是不確定如何確定它是32位還是64位平台?

以下是一些相關的系統屬性以及我機器上的值:

os.arch:                 x86
os.name:                 Windows Vista
sun.arch.data.model:     32

從這些信息中,您應該能夠猜出如下信息:

String osName     = System.getProperty("os.name").toLowerString();
String dataModel  = System.getProperty("sun.arch.data.model");

boolean isWindows = osName.startsWith("windows");
boolean isLinux   = osName.startsWith("linux"); // or whatever
boolean is32bit   = "32".equals(dataModel);
boolean is64bit   = "64".equals(dataModel);

if(isWindows && is32bit){
    call32BitWindowsLib();
}

//etc.

有關完整的參考,請參閱:

我認為沒有本機調用(例如查詢注冊表)是不可能的,但是您可以使用系統屬性os.arch來確定當前正在運行應用程序的JRE的位數。

(如果有人在64位計算機上運行32位JRE,則會得到x64,因此您不知道自己是否在64位體系結構上,因此應調用32位版本-但反之,您可以安全地調用本機應用程序的64位版本)。

另一種方法可能是強行強制:為什么現在總是嘗試運行e位來運行64位版本,如果出現錯誤,請改用32位二進制文​​件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM