2012-05-30 17 views
9

Recientemente me trasladaron en una nueva máquina de 64 bits de Windows 7. Pero cuando corro este código, para obtener el nombre del sistema operativo incorrectaincorrecta nombre del sistema operativo conseguir en Java

String osName = System.getProperty("os.name"); 
System.out.println("OS Name = " + osName); 

La salida viene:

OS Name = Windows Vista 

Cualquier idea, ¿qué hay de malo en mi código o sistema?

Gracias de antemano.

+1

¿Tal vez Windows está ejecutando su JVM en "modo Vista" (modo de compatibilidad)? – Hassan

+0

Estoy usando java.version = 1.5.0_16, debido a nuestra dependencia de proyecto. – Kishore

Respuesta

12

Es posible que esté utilizando una versión anterior de Java. Como se trataba de un error conocido (bug_id = 6819886) que se ha corregido en las versiones más recientes. Kindly read this for further details.


Una posible solución para esto en caso de que no son capaces de actualizar su versión de Java:

String osName = System.getProperty("os.name"); 
    if (osName.equals("Windows XP") || osName.equals("Windows Vista")) 
    { 
     //do something and remember to put in all the names in the above if list. I just added two for example,it will have to include all like Windows NT,ME,95,etc. 
    } 
    else 
    { 
     //the block that will be accessible for Windows 7 
    } 
+0

Entonces, ¿cuál será la solución de este problema al usar la versión de guardar Java? – Kishore

+0

amablemente vea la edición. –

+0

Gracias @ Gaara. Lo haré. – Kishore

3

Funciona en mi máquina con Windows 7 (ciertamente una de 32 bits, no tengo acceso a una de 64 bits en este momento).

¿Quizás su JRE es anterior a Windows 7 y el nombre está escrito en él? ¿Qué versión del JRE estás usando? Sugeriría actualizar a la última versión y volver a intentarlo. Es cierto que es bastante desagradable si el JRE tiene tiene los nombres del sistema operativo codificados, pero han sucedido cosas extrañas.

+0

Posible, pero creo que esto es poco probable. – Hassan

+0

Estoy usando java.version = 1.5.0_16, debido a nuestra dependencia de proyecto. – Kishore

2

Use JAVA-6, intenté que funcionara bien, de lo contrario, su Windows está tratando a JVM con el modo Vista.

1

Corrió en el mismo problema recientemente. Como indica el estado de las notas de evaluación bug 6819886, puede verificar la propiedad os.version para distinguir entre Windows 7 y Windows Vista en este caso.

La versión para Windows 7 es 6.1 y que para Windows Vista es 6.

String osVersion = System.getProperty("os.version"); 
if("6.1".equals(osVersion)){ 
    System.out.println("OS is Windows 7"); 
} 

De esta manera usted no tiene que actualizar a la última versión de Java sólo para hacer este trabajo.

Cuestiones relacionadas