2012-04-30 9 views
6

¿Hay alguna manera de encontrar el nombre del sistema operativo usando Java?¿Hay alguna forma de encontrar el nombre del sistema operativo usando Java?

He tratado a continuación código, pero se vuelve parece (Linux, Windows ..)

System.getProperty("os.name") 

que necesito para detectar debajo del formato

Linux - "Ubuntu, Mandriva .. ", ventanas - "xp, vista ..."

lo siento por mi Inglés :-(!!!

¿Alguna idea?

+0

En su ejemplo, 'os.name' devolvería 'Windows XP' por ejemplo. – assylias

+0

@assylias lo siento. soy usuario de linux no sé resultado de Windows. Quiero Linux nombre (ubuntu ..) – sprabhakaran

+0

soy nuevo en este blog. gracias por compartir el enlace – sprabhakaran

Respuesta

11

Puede utilizar System.getProperty() para obtener las siguientes propiedades:

  • os.name: nombre del sistema operativo
  • os.arch: Arquitectura del sistema operativo
  • os.version: sistema operativo versión

En su caso, creo que está buscando la propiedad os.version. El javadocs para System.getProperties() contiene una lista completa de propiedades que puede recuperar.

Editar

Acabo de probar esto en Linux Mint y parece que el conseguir la propiedad os.version realidad devuelve la versión del kernel, y no la versión distro:

Linux 
amd64 
2.6.38-8-generic 

Después de encontrar this post, parece que no hay una manera confiable de encontrar qué distribución de Linux está ejecutando a través de la API de Java.

Si usted sabe que está corriendo en Linux, en su lugar puede ejecutar uno de los siguientes comandos del sistema de Java, pero que tendrá que grep/analizar la distribución:

  • cat /etc/*-release
+2

De hecho, 'uname -a' no incluye el nombre de la distribución. (O al menos en Fedora, no). Y probablemente debería usar "/ etc/system-release" ... porque (de nuevo en Fedora, al menos) el patrón "/ etc/* - release" coincide con 3 nombres de ruta –

+0

Hmm, supongo que eso se pondría feo porque en Linux Mint, el nombre de distribución se almacena en/etc/lsb-release. Recuerdo leer hace un tiempo para incluir el comodín porque el archivo en el que está almacenada la versión de distribución no es uniforme en todas las distribuciones. ¿Tal vez valdría la pena canalizar la salida a 'grep DISTRIB_DESCRIPTION'? De cualquier manera, voy a editar mi respuesta, gracias por los comentarios. –

+0

Greping "/ etc/* - release" para DISTRIB_DESCRIPTION no funciona en Fedora. Todos los archivos consisten en solo "Fedora versión 16 (Verne)". –

5

Esto podría ayudarle a:

System.out.println("\nName of the OS: " + System.getProperty("os.name")); 
System.out.println("Version of the OS: " + System.getProperty("os.version")); 
System.out.println("Architecture of the OS: " + System.getProperty("os.arch")); 

EDIT: Esto es lo que devuelve bajo Windows:

Name of the OS: Windows XP 
Version of the OS: 5.1 
Architecture of the OS: x86 
1

Existen algunas propiedades del sistema que puede consultar. Eche un vistazo a the tutorial para más detalles. Una combinación de algunos o todos estos 3 debería ayudarlo:

System.getProperty("os.arch") 
System.getProperty("os.name") 
System.getProperty("os.version") 
Cuestiones relacionadas