2008-11-07 6 views
5

Je suis tombé sur quelque chose de vraiment énigmatique concernant System.getProperty("os.name"). Selon a Java bug on the matter et the Java 5 release notes (recherche de « os.name »), il y avait un bug dans Java avec les premières versions de « Longhorn » de Vista qui aurait été fixé dans la version v5 10.Pourquoi Java sur une boîte Vista rapporte-t-il qu'il est sous XP?

Cependant ma boîte de Vista SP1 - en utilisant à la fois la version 15 et la version 6 de la v5 6 - System.getProperty("os.name") renvoie «Windows XP». Plus loin System.getProperty("os.version") renvoie "5.1". Cependant, je ne trouve rien à propos de ce problème via Google. Cela me fait me demander si c'est bizarre avec ma configuration de Vista. J'ai essayé d'appeler la fonction API GetVersionEx() à partir d'un programme de test C et elle renvoie la version majeure 6, minor 0 (comme je m'attendais à une installation de Vista).

Est-ce que quelqu'un d'autre a rencontré ce problème, connaît un correctif ou a des suggestions de comment je pourrais contourner ce problème sans utiliser JNI?

+0

Cela m'a aidé à comprendre pourquoi notre produit retournait les mauvaises valeurs. Le bug java, corrigé en 6u14 ... dommage que nous soyons encore en expédition avec 6u13 = D – GreenKiwi

Répondre

10

Il se peut que Java s'exécute en mode de compatibilité XP. Dans ce cas, Vista simulera le numéro de version de Windows, faisant croire à Java qu'il fonctionne sous XP. Vérifiez l'onglet de compatibilité de l'exécutable.

+0

Vous êtes un génie monsieur! :) J'utilisais Eclipse en mode compatibilité car la fonction de défilement automatique de Vista rend Eclipse pratiquement inutilisable. Par conséquent, il exécutait tout code Java que j'avais lancé à partir d'Eclipse en mode de compatibilité. Il rapporte Vista très bien avec le mode de compatibilité désactivé: D –

0

Le numéro de version Windows réel de Windows 2000 était 5.0. Windows XP était 5.1. Vista est censé être 6.0, donc votre programme de test fonctionne correctement. Il me semble que Java se trompe définitivement.

Vous pourriez avoir à compter sur un JNI pour obtenir la bonne réponse. Je suppose que vous vous êtes déjà demandé pourquoi vous pourriez avoir besoin de varier le comportement de votre programme selon que vous utilisez XP ou Vista.

+0

La réponse à la question de savoir pourquoi je dois varier le comportement est simple: les liens symboliques. Ils existent dans Vista et pas dans XP;) –

+0

Vérifiez la réponse de Martin, c'est vraiment bon! –

Questions connexes