Как определить наличие и расположение JVM в Windows?
Я пытаюсь определить, установлен ли JVM и где он находится, чтобы я мог запустить java.exe
.
все, что мне удалось найти-это HKCUSoftwareJavaSoftJava Runtime Environment<ver>
. Можно ли предположить, что он установлен в %PROGRAMFILES%Javajre<ver>
?
Я пытаюсь сделать это на C#, но я предполагаю, что ответ довольно языковой агностик, поэтому любой ответ приветствуется.
EDIT: Ок, у меня нашли как определить, установлена ли среда выполнения java или нет на компьютере с помощью в C#, который указал мне на HKLMSoftwareJavaSoftJava Runtime EnvironmentCurrentVersion
работает с HKLMSoftwareJavaSoftJava Runtime Environment<ver>JavaHome
. Мне удалось найти их вместо этого под HKLMSoftwareWow6432NodeJavaSoftJava Runtime Environment
. Есть ли способ определить, какой из них я должен проверять, не пытаясь нюхать тип процессора?
4 ответов
Я собираюсь бросить свою шляпу в кольцо с кодом, который я использовал:
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.
}
правильно установленная JVM в системе windows будет (скорее всего ..) ответьте на команду командной оболочки:
java -version
Это не возвращает путь, но попробуйте
java -verbose -version
(по крайней мере) одна из строк будет содержать подстроку rt.jar
и эта строка содержит путь "активной" виртуальной машины java.
вы можете попытаться получить переменную среды " * JAVA_HOME*".
Это может быть полезным.
EDIT:
лучше идея смотреть por"классов" переменной.
------- start --------
C:\Documents and Settings\david>set
ALLUSERSPROFILE=...
APPDATA=...
CLASSPATH=.;C:\Archivos de programa\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=...
...
----- end ----