Простой пуленепробиваемый метод проверки наличия в системе jre (Windows)

StackOverflow https://stackoverflow.com/questions/812100

  •  03-07-2019
  •  | 
  •  

Вопрос

Извините за мой вопрос новичка: P Если я добавлю "java-version" в cmd в системе Windows, я гарантированный что система сможет работать.файлы jar если я не получу никакой ошибки?

Это было полезно?

Решение

Я думаю, единственный гарантированный способ проверить наличие JRE - это попытаться запустить небольшую Java-программу.

Или, может быть, даже не это - я предполагаю, что в системе может быть установлена только часть стандартной библиотеки Java, и в этом случае небольшой тестовый JAR может работать нормально, но полноценная программа - нет.Хотя я не могу себе представить, зачем кому-то понадобилось утруждать себя настройкой системы таким образом.

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

Из командной строки вы сможете вызвать " java --version " который вернет ошибку, если java не установлен или информация об установленной версии.

Ну, очевидно, что нет.Вы можете поместить пустой файл с именем java.bat в любом месте в PATH, например C:\Windows\System32.Вызов "java" не приведет к каким-либо ошибкам, но это не означает, что установлена JRE.

Почему бы не запустить небольшой файл класса, который записывает значение в файл, который вы затем проверяете? Если это не удается, это не работает.

Хорошее значение может быть значением системного свойства java.version.

В Windows вы можете проверить реестр по адресу HKLM \ SOFTWARE \ JavaSoft \ Java Plug-in. Оттуда каждый подраздел является установленной JRE.

edit . Здесь приведен код C #, который будет возвращать массив строк с установленными JRE

public string[] GetInstalledJavas() {
        // hold the registry subkeys that list the installed JRE's
        string[] jres = null;
        try {
            RegistryKey myKey = Registry.LocalMachine;
            myKey = myKey.OpenSubKey(@"SOFTWARE\JavaSoft\Java Plug-in"); // read-only
            jres = myKey.GetSubKeyNames();
        } catch (Exception myException) {
            Console.Writeline(myException.ToString());
        }
        return jres;
}

На самом деле, я бы посоветовал, если вас интересует только проверка на компьютерах с Windows, проверка реестра на наличие обработчика для JNLP ... который должен гарантировать наличие относительно недавнего JRE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top