Как я могу обнаружить установленную Sun/Oracle JRE в Windows?

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

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

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

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

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

Ответы

Ответ 1

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

Ответ 2

Windows > Пуск > cmd >

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

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

Ответ 3

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

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

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

'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.

Ответ 4

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

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

Ответ 5

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

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