Как определить наличие и местоположение JVM в Windows? - PullRequest
8 голосов
/ 25 января 2011

Я пытаюсь определить, установлена ​​ли JVM и где она находится, чтобы я мог запустить java.exe.

Все, что мне удалось найти, это HKCU\Software\JavaSoft\Java Runtime Environment\<ver>. Можно ли предположить, что он установлен в %PROGRAMFILES%\Java\jre<ver>?

Я пытаюсь сделать это в C #, но я предполагаю, что ответ довольно независим от языка, поэтому любой ответ приветствуется.

РЕДАКТИРОВАТЬ: Хорошо, глупый я, я нашел Как определить, установлена ​​ли среда выполнения Java на компьютере, используя c # , который указал мне на HKLM\Software\JavaSoft\Java Runtime Environment\CurrentVersion, который работает с HKLM\Software\JavaSoft\Java Runtime Environment\<ver>\JavaHome. Вместо этого мне удалось найти их под HKLM\Software\Wow6432Node\JavaSoft\Java Runtime Environment. Есть ли какой-нибудь способ определить, какие из них я должен проверять, не пытаясь понюхать тип процессора?

Ответы [ 4 ]

4 голосов
/ 25 января 2011

Я собираюсь бросить свою шляпу в кольцо с кодом, который я использовал в итоге:

string javaDirectory = null;

// Native registry key - 32b on 32b or 64b on 64b
// Fall back on 32b Java on Win64 if available
RegistryKey javaKey =
    Registry.LocalMachine.OpenSubKey("SOFTWARE\\Javasoft\\Java Runtime Environment") ??
    Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wow6432Node\\Javasoft\\Java Runtime Environment");

if (javaKey != null)
{
    string javaVersion = javaKey.GetValue("CurrentVersion").ToString();
    try
    {
        javaDirectory = javaKey.OpenSubKey(javaVersion).GetValue("JavaHome").ToString();
    } catch(NullReferenceException)
    { /* Ignore null deref, means we can't get a directory */ }
}

if (javaDirectory == null)
{
    // deal with a lack of Java here.
}
3 голосов
/ 25 января 2011

Правильно установленная JVM в системе Windows будет (скорее всего ..) отвечать на команду командной оболочки:

java -version

Это не возвращает путь, но попробуйте

java -verbose -version

(по крайней мере) одна из строк будет содержать подстроку rt.jar, а эта строка содержит путь к "активной" виртуальной машине Java.

0 голосов
/ 26 января 2011

Разве JRE не устанавливает java.exe в c: \ windows?

0 голосов
/ 25 января 2011

Вы можете попытаться получить переменную окружения "* JAVA_HOME *".

Это может быть полезно.

EDIT:

Лучшая идея, смотрите переменную " CLASSPATH ".

------- start --------
C:\Documents and Settings\david>set
ALLUSERSPROFILE=...
APPDATA=...
CLASSPATH=.;C:\Archivos de programa\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=...
...
----- end ----
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...