Detekce OS a architektury v Javě

mayk.ee

Detekce OS a architektury v Javě
« kdy: 30. 05. 2013, 15:46:44 »
Zdravim...

robim drobnu multiplatformnu aplikaciu v jave, a potreboval by som v aplikacii detekovat na akom OS bola spustena a na akej architekture...

V Linuxe (Kubuntu 12.04) zistim zo System.getProperty("os.name") akurat "Linux"...

Takze potrebujem zistit ci Linux je 32/64... Pokial mozno aby to bolo co najuniverzalnejsie - napriec vsetkymi distribuciami... (alebo aspon Ubuntu derivaty)

Windows mam poriesene testovanim existencie ProgramFiles(x86)... ostatne OS nieje potrebne riesit...
« Poslední změna: 30. 05. 2013, 15:56:56 od Petr Krčmář »


jehovista

Re:Detekce OS a architektury v Javě
« Odpověď #1 kdy: 30. 05. 2013, 16:13:39 »
A co je cilem? Jestli ti nestaci vedet, jestli bezis pod 32/64 bit JVM. Na Oracle jave by melo fungovat tohle: System.getProperty("sun.arch.data.model")
Jinak tady je knihovna, co by to mela umet: http://sourceforge.net/projects/sigar/

Jakub Galgonek

Re:Detekce OS a architektury v Javě
« Odpověď #2 kdy: 30. 05. 2013, 16:38:12 »
Windows mam poriesene testovanim existencie ProgramFiles(x86)...

To asi není moc dobrý nápad. Mám dojem, že jméno této složky závisí na jazykové mutaci Windows.

mayk.ee

Re:Detekce OS a architektury v Javě
« Odpověď #3 kdy: 30. 05. 2013, 16:50:17 »
jehovista: No zabudol som napisat, ze nestaci... sice aplikacii je jedno pod cim bezi, ale je to taky loader dll-ciek a dalsich udelatok, aby ina aplikacia mohla fungovat spravne... ale vraj sa to uz poriesi inak, takze pre mna problem solved :D ale vdaka aj tak...

Jakub Galgonek: cez globalne premenne to funguje na hociakych verziach... otestovane...

Arthur

  • ***
  • 174
    • Zobrazit profil
    • E-mail
Re:Detekce OS a architektury v Javě
« Odpověď #4 kdy: 30. 05. 2013, 17:14:21 »
Tohle je kus jednoho meho kodu, snad je to prehledne ...

hlavniPanel.log(HlavniPanel.LOG_TEXT,"java vendor: "+System.getProperty("java.vendor"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"java runtime: "+System.getProperty("java.runtime.name"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"java version: "+System.getProperty("java.version"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"java home: "+System.getProperty("java.home"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"operating system: "+System.getProperty("os.name")+" | "+System.getProperty("os.version")+" | "+System.getProperty("os.arch"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"user name: "+System.getProperty("user.name"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"user home directory: "+System.getProperty("user.home"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"working directory: "+System.getProperty("user.dir"));
hlavniPanel.log(HlavniPanel.LOG_TEXT,"maximum available memory for jvm: " + Runtime.getRuntime().maxMemory() / (1024*1024) + " MiB");


ohlol

Re:Detekce OS a architektury v Javě
« Odpověď #5 kdy: 30. 05. 2013, 17:33:55 »
Windows mam poriesene testovanim existencie ProgramFiles(x86)...

To asi není moc dobrý nápad. Mám dojem, že jméno této složky závisí na jazykové mutaci Windows.

Jo. A pak je jeste radost s kodovanim narodnich znaku tech cest jazykovych mutaci. Diky tomu bylo/je dost verzi vmware serveru nefunkcnich na ceskych widlich.

Pavel Tisnovsky

Re:Detekce OS a architektury v Javě
« Odpověď #6 kdy: 30. 05. 2013, 18:08:44 »

Takze potrebujem zistit ci Linux je 32/64... Pokial mozno aby to bolo co najuniverzalnejsie - napriec vsetkymi distribuciami... (alebo aspon Ubuntu derivaty)


Takze to ma byt jen pro x86 architekturu nebo i trosku univerzalnejsi? Muzes samozrejme spustit ja nevim uname -n nebo uname -p kdyz uz zdetekujes Linux, coz neni problem (popr. to samy dela posixova funkce uname pokud si chces hrat s JNI :-). Taky /proc/cpuinfo da podrobnejsi udaje.