2013-03-06 11 views
8

Czy można wykryć architekturę procesora w języku Java? jak X86 lub Sun SPARC, itp? Jeśli tak, to jak mam to zrobić?Czy można wykryć architekturę procesora w języku Java?

+0

Który OS? Czy czytanie niektórych plików, takich jak/proc/cpuinfo na Linuksie, pomoże? – CloudyMarble

+0

@DwoMore: Solaris i windows głównie – shawn

+0

@shawn, a następnie lepiej użyć platformy niezależnego rozwiązania przy użyciu czystej java, patrz odpowiedź poniżej. – CloudyMarble

Odpowiedz

6

Można spróbować System.getenv() uzyskać zmienne środowiskowe, użyj klawisza PROCESSOR_ARCHITECTURE uzyskać CPU-architechture:

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

lub w przypadku 64-bitowych:

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

Innym sposobem byłoby należy użyć "os.arch" system property 210 i możesz potrzebować uzyskać OS przed użyciem System.getProperty("os.name"), ponieważ jest to zależne od systemu operacyjnego, jak wspomniano w odpowiedzi QMuhammada.

Zawiadomienie that: Właściwości

systemowe i zmienne środowiskowe są zarówno koncepcyjnie odwzorowania między nazwami i wartościami. Oba mechanizmy mogą być używane do przekazywania informacji zdefiniowanych przez użytkownika do procesu Java.

Istotne linki:

+1

Działa to tylko w systemie MS Windows i tylko w niektórych wersjach systemu MS Windows. –

+0

@Mikhail Vladimirov Edytowałem swoją odpowiedź, ale jej ładny interesstign co wspomniałeś, że to byłoby niezależne od platformy – CloudyMarble

+0

Przynajmniej to jest opisane w oficjalnej specyfikacji: http://docs.oracle.com/javase/7/docs/api/ java/lang/System.html # getProperties% 28% 29 –

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

Na moim komputerze zwraca amd64.

+0

To nie wydaje się działać poprawnie w niektóre przypadki 64-bitowego systemu Windows z 32-bitowym procesem JVM zobacz: http://stackoverflow.com/a/5940770/395659 – CloudyMarble

4

Można użyć następującą właściwość, aby uzyskać architekturę procesora:

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

Zwraca "amd64", jak używam 64-bitowy procesor Intel i Intel 64 bit wykorzystuje amd architekturą.

Jeśli potrzebujesz OS wartość architektury można użyć tej właściwości „os.arch”

A jeśli potrzeba żadnego innego mienia to może Ci pomóc. Napisałem następujący fragment, aby uzyskać wszystkie właściwości systemu:

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

Własność 'sun.cpu.isalist' nie jest standardowa. Lepiej użyj standardowej właściwości 'os.arch'. –

+1

Wymieniłem oba, aby oba mogły działać. Ponadto "sun.cpu.isalist" nie jest ustawiony na Linuksie, ale jest ustawiony na Solaris i Windows. Zależy od platformy, nad którą pracujesz. –

Powiązane problemy