2008-11-07 4 views
5

Me he tropezado con algo realmente desconcertante con respecto a System.getProperty("os.name"). De acuerdo con a Java bug on the matter y the Java 5 release notes (busque "os.name"), hubo un error en Java con versiones anteriores de "longhorn" de Vista que deberían haberse solucionado en la versión 10.¿Por qué Java en una caja Vista informa que está en XP?

Sin embargo, en mi cuadro Vista SP1 - utilizando tanto la versión 15 de v5 como la versión 6 6 - System.getProperty("os.name") devuelve "Windows XP". Además, System.getProperty("os.version") devuelve "5.1". Sin embargo, no puedo encontrar nada relacionado con este problema a través de Google. Esto me hace preguntarme si es algo extraño con mi configuración de Vista. Intenté llamar a la función de la API GetVersionEx() desde un programa C de prueba y devuelve la versión principal 6, menor 0 (como era de esperar para una instalación de Vista).

¿Alguien más ha encontrado este problema, conoce alguna solución o tiene alguna sugerencia de cómo podría solucionarlo sin utilizar JNI?

+0

Esto me ayudó a resolver por qué nuestro producto devolvía los valores incorrectos. El error Java, corregido en 6u14 ... es una lástima que sigamos enviando con 6u13 = D – GreenKiwi

Respuesta

10

Es posible que Java se ejecute en el modo de compatibilidad de XP. En ese caso, Vista falsificará el número de versión de Windows, haciendo que Java crea que se ejecuta en XP. Verifique la pestaña de compatibilidad del ejecutable.

+0

¡Eres un genio señor! :) Estaba ejecutando Eclipse en modo compatibilidad ya que la característica de desplazamiento automático en Vista hace que Eclipse casi no se pueda usar. Como resultado, ejecutaba cualquier código Java que lanzara desde Eclipse en modo compatibilidad también. Informa perfectamente a Vista con el modo de compatibilidad desactivado: D –

0

El número de versión de Windows actual de Windows 2000 era 5.0. Windows XP era 5.1. Vista es supuestamente 6.0, por lo que su programa de prueba está funcionando correctamente. A mí me parece que Java definitivamente está haciendo esto mal.

Es posible que deba confiar en un JNI para obtener la respuesta correcta. Supongo que ya se ha preguntado por qué podría necesitar variar el comportamiento de su programa en función de si está usando XP o Vista.

+0

La respuesta a por qué necesito variar el comportamiento es simple: enlaces simbólicos. Existen en Vista y no en XP;) –

+0

¡Comprueba la respuesta de Martin, es realmente buena! –

Cuestiones relacionadas