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?
Odpowiedz
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:
Działa to tylko w systemie MS Windows i tylko w niektórych wersjach systemu MS Windows. –
@Mikhail Vladimirov Edytowałem swoją odpowiedź, ale jej ładny interesstign co wspomniałeś, że to byłoby niezależne od platformy – CloudyMarble
Przynajmniej to jest opisane w oficjalnej specyfikacji: http://docs.oracle.com/javase/7/docs/api/ java/lang/System.html # getProperties% 28% 29 –
System.getProperty ("os.arch");
Na moim komputerze zwraca amd64
.
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
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);
}
}
Własność 'sun.cpu.isalist' nie jest standardowa. Lepiej użyj standardowej właściwości 'os.arch'. –
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. –
Który OS? Czy czytanie niektórych plików, takich jak/proc/cpuinfo na Linuksie, pomoże? – CloudyMarble
@DwoMore: Solaris i windows głównie – shawn
@shawn, a następnie lepiej użyć platformy niezależnego rozwiązania przy użyciu czystej java, patrz odpowiedź poniżej. – CloudyMarble