![](/img/trans.png)
[英]In java determine if a process created using Runtime environment has finished execution?
[英]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.