Как я могу определить установленную Sun / Oracle JRE в Windows? - PullRequest
15 голосов
/ 27 августа 2009

Я попытался найти ответ в Google, но все, что я нашел, это советы о том, как обнаружить Java из браузера, или очень общий способ только запустить Java и посмотреть, работает ли он, что приводит к большой задержке в моем приложении. (~ две секунды при первом запуске на моей машине)

Я надеюсь, что есть более быстрый путь, если применяются следующие ограничения:

  • Только JRE Sun / Oracle или JDK
  • Только 1,6 и выше
  • Только для платформ Windows
  • Не из браузера, а из простого старого исполняемого файла Win32

Это обнаружение предназначено не для общедоступного приложения, а только для внутреннего использования на платформах Windows.

Есть ли путь к реестру, который я могу прочитать, или какой-то файл конфигурации, который я могу проанализировать?

Ответы [ 5 ]

19 голосов
/ 27 августа 2009
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
5 голосов
/ 10 мая 2012

Windows> Пуск> cmd>

C:> for %i in (java.exe) do @echo.   %~$PATH:i

Если у вас установлена ​​JRE, отображается путь, например: C:\Windows\System32\java.exe

4 голосов
/ 27 августа 2009

Реестр, вероятно, будет самым простым маршрутом - при условии, что установщик был запущен. Установленные версии можно найти в различных подразделах:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

Если пользователь вручную сконфигурировал свою среду, вы можете проверить JAVA_HOME / прогулку по переменной PATH и проверить версию файла. Демонстрационный скрипт WSH:

'file:  whereJava.vbs
'usage: cscript /Nologo whereJava.vbs

'find Java 6 from registry
Set objShell = CreateObject("WScript.Shell")
Wscript.Echo objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\" &_
                   "JavaSoft\Java Runtime Environment\1.6\JavaHome")

'check file version of java.exe
javaHome = objShell.Environment.item("JAVA_HOME")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo objFSO.GetFileVersion(javaHome & "\bin\java.exe")

См. GetFileVersionInfo и компания. Основные номера версий, похоже, соответствуют версии Java (5, 6). Есть ограниченная сумма, которую вы можете обойтись без вызова JVM.

1 голос
/ 04 сентября 2009

Может быть любое количество установленных JRE и JDK на компьютере с Windows, но только у одного будет установлен HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment.

Вы можете также рассмотреть переменные окружения "JAVA_HOME" и "Path", так как они будут влиять на вызовы Java командной строки.

1 голос
/ 27 августа 2009

Вместо этого вы можете попробовать запустить команду "java -version" в командной строке.

Это может не сработать, если JRE не установлена ​​должным образом, а скопирована с другого компьютера. Обходной путь Sure shot - перейти в каталог установки JRE « C: \ Program Files \ Java \ », перейти в папку bin из командной строки и запустить « java -version ». ». Выводом будет версия установки и вся необходимая информация, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...