Как определить, установлена ​​ли среда выполнения Java или нет - PullRequest
9 голосов
/ 06 декабря 2009

Я программирую приложения Windows, используя Java, и это создает файл «.jar», а не «.exe». Когда клиентский компьютер без установленной среды выполнения Java открывает файл «.jar», он запускается как архив с winrar. Все, что я хочу знать, это как определить, установлена ​​ли среда выполнения Java на компьютере, используя код c #, чтобы показать MessageBox, говорящий пользователю об установке среды выполнения Java, или запустить файл «.jar», используя среду выполнения Java, если она установлена .

Ответы [ 4 ]

10 голосов
/ 06 декабря 2009

Вы можете проверить реестр

RegistryKey rk = Registry.LocalMachine;
RegistryKey subKey = rk.OpenSubKey("SOFTWARE\\JavaSoft\\Java Runtime Environment");

string currentVerion = subKey.GetValue("CurrentVersion").ToString();
6 голосов
/ 05 марта 2014

Запустите 'Java-версию' в дочернем процессе. Проверьте код выхода и возвращенный вывод для versioninfo

    List<String> output = new List<string>();
    private bool checkIfJavaIsInstalled()
    {
        bool ok = false;

        Process process = new Process();
        try
        {
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.Arguments = "/c \"" + "java -version " +  "\"";

            process.OutputDataReceived += new DataReceivedEventHandler((s, e) =>
            {
                if (e.Data != null)
                {
                    output.Add((string) e.Data);
                }
            });
            process.ErrorDataReceived += new DataReceivedEventHandler((s, e) =>
            {
                if (e.Data != null)
                {
                    output.Add((String) e.Data);
                }
            });

            process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();

            process.WaitForExit();

            ok = (process.ExitCode == 0);
        }
        catch
        {
        }

        return (ok);
    }
4 голосов
/ 06 декабря 2009

Вы можете проверить в реестре. Это скажет вам, если у вас есть JRE, и какая версия .

Из этого документа :

HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\<version number>
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Development Kit\<version number>

где включает номера основной, вспомогательной версии и версии патча; например, 1.4.2_06

1 голос
/ 06 декабря 2009

Небольшой апплет на html-странице, который отменяет перенаправление на страницу «Пожалуйста, установите Java».

РЕДАКТИРОВАТЬ: Это почти единственный действительно пуленепробиваемый способ. Любой раздел реестра, содержащий JavaSoft, наиболее вероятен только для Sun JVM, а не для любого другого (например, IBM или BEA).

...