Простой пуленепробиваемый метод проверки наличия в системе jre (Windows)
Вопрос
Извините за мой вопрос новичка: 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.