Почему Java на коробке Vista сообщает, что она находится на XP?

В отношении System.getProperty("os.name") я наткнулся на нечто действительно загадочное. Согласно ошибка Java по этому поводу и примечания к выпуску Java 5 (поиск «os.name»), в ранних версиях Vista «longhorn» была ошибка в Java, которую следовало исправить в v5 версии 10.

Однако на моем компьютере с Vista SP1 - при использовании как v5 версии 15, так и версии 6 v6 - System.getProperty("os.name") возвращает "Windows XP". Далее System.getProperty("os.version") возвращает «5.1». Я не могу найти ничего, связанного с этой проблемой через Google. Это заставляет меня задаться вопросом, не странно ли это с моей установкой Vista. Я попытался вызвать функцию API GetVersionEx () из тестовой программы на C, и она возвращает основную версию 6, младшую 0 (как я и ожидал при установке Vista).

Кто-нибудь еще сталкивался с этой проблемой, знает об исправлении или имеет какие-либо предложения о том, как я могу ее обойти без использования JNI?

Это помогло мне разобраться, почему наш продукт возвращал неправильные значения. Ошибка java, исправленная в 6u14 ... жаль, что мы все еще поставляем с 6u13 = D

GreenKiwi 19.08.2010 05:07
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
978
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Фактический номер версии Windows 2000 был 5.0. Windows XP была 5.1. Версия Vista предположительно 6.0, так что ваша тестовая программа работает правильно. Мне кажется, что Java определенно ошибается.

Возможно, вам придется полагаться на JNI, чтобы получить правильный ответ. Я как бы предполагаю, что вы уже спрашивали себя, почему вам может потребоваться изменять поведение вашей программы в зависимости от того, используете ли вы XP или Vista.

Ответ на вопрос, почему мне нужно менять поведение, прост: символические ссылки. Они есть в Vista, а не в XP;)

David Arno 08.11.2008 02:26
Ответ принят как подходящий

Возможно, Java работает в режиме совместимости с XP. В этом случае Vista подделает номер версии Windows, заставив Java поверить, что она работает на XP. Проверьте вкладку совместимости исполняемого файла.

Вы гений сэр! :) Я запускал Eclipse в режиме совместимости, поскольку функция автоматической прокрутки в Vista делает Eclipse практически непригодным для использования. В результате он также запускал любой Java-код, который я запускал из Eclipse, в режиме совместимости. Он сообщает, что Vista просто отлично с отключенным режимом совместимости: D

David Arno 08.11.2008 21:22

Другие вопросы по теме