2013-03-06 30 views
8

是否有可能在java中檢測處理器架構?像x86或Sun SPARC等?如果是這樣,我該如何去做呢?是否有可能在java中檢測處理器體系結構?

+0

哪個操作系統?會閱讀某些文件,如/ proc/cpuinfo在Linux的幫助? – CloudyMarble 2013-03-06 07:12:47

+0

@TwoMore:Solaris和windows主要是 – shawn 2013-03-06 07:13:26

+0

@shawn那麼你最好使用一個使用純java的平臺不依賴的解決方案,見下面的答案。 – CloudyMarble 2013-03-06 07:17:41

回答

6

你可以嘗試System.getenv()獲取環境變量,使用PROCESSOR_ARCHITECTURE鍵獲得CPU-architechture:

System.out.println(System.getenv("PROCESSOR_ARCHITECTURE")); 

或64位的情況下:

System.out.println(System.getenv("PROCESSOR_ARCHITEW6432")); 

對方會這樣要使用「os.arch」system property

System.getProperty("os.arch"); 

,並且在使用System.getProperty("os.name")之前,您可能需要獲得操作系統,因爲QMuhammad在他的答案中提到了這個操作系統依賴於操作系統。

通知that

系統屬性和環境變量名稱和值之間都 概念映射。這兩種機制可以是 用於將用戶定義的信息傳遞給Java進程。

相關鏈接:

+1

這僅適用於MS Windows,並且僅適用於某些版本的MS Windows。 – 2013-03-06 07:21:51

+0

@MikhailVladimirov我編輯了我的答案,但它的相當interesstign你提到的,認爲這將是平臺不依賴 – CloudyMarble 2013-03-06 07:35:27

+0

至少這是官方規範描述:http://docs.oracle.com/javase/7/docs/api/爪哇/郎/系統。html#getProperties%28%29 – 2013-03-06 07:41:34

6
System.getProperty ("os.arch"); 

在我的電腦上返回amd64

+0

這似乎不能正常工作一些使用32位JVM進程的64位Windows的情況請參閱:http://stackoverflow.com/a/5940770/395659 – CloudyMarble 2013-03-06 07:26:01

4

您可以使用下面的屬性來獲取處理器架構:

 System.getProperty("sun.cpu.isalist"); 

這是我使用英特爾的64位處理器和Intel 64位採用了AMD架構返回「AMD64」。

如果你需要,你可以使用這個屬性「os.arch」

如果您需要任何其他財產,那麼這可能會幫助你的OS架構的價值。我寫了以下代碼片段來獲取所有系統屬性:

public static void main(String[] args) { 
    Properties props = System.getProperties(); 
    Enumeration<Object> keys = props.keys(); 

    while(keys.hasMoreElements()){ 
     Object key = keys.nextElement(); 
     Object value = props.get(key); 
     System.out.println("Key: "+key + " Value: "+value); 
    } 
} 
+1

屬性'sun.cpu.isalist'不是標準的。你最好使用標準的'os.arch'屬性。 – 2013-03-06 07:23:55

+1

我提到這兩個都可以工作。此外,「sun.cpu.isalist」未在Linux上設置,但在Solaris和Windows上設置。取決於你在哪個平臺上工作。 – 2013-03-06 07:34:31

相關問題