Простой пуленепробиваемый метод проверки наличия в системе jre (windows) - PullRequest
0 голосов
/ 01 мая 2009

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

Ответы [ 6 ]

2 голосов
/ 01 мая 2009

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

2 голосов
/ 01 мая 2009

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

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

1 голос
/ 01 мая 2009

В 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;
}
1 голос
/ 01 мая 2009

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

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

1 голос
/ 01 мая 2009

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

0 голосов
/ 01 мая 2009

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

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