Как часть установщика, который я создаю, я хочу проверить, установлен ли уже Java Development Kit (в частности, JDK, JRE не подходит). На моем локальном компьютере я четко вижу ключ в реестре (HKLM \ SOFTWARE \ JavaSoft \ Java Development Kit), но следующий код (C #) не находит указанный ключ:
RegistryKey jdkKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\JavaSoft\Java Development Kit");
Когда я исследую, какие ключи присутствуют в «HKLM \ SOFTWARE \ JavaSoft», используя следующий код, Java Development Kit там нет.
string[] keyNames = Registry.LocalMachine.OpenSubKey("SOFTWARE\\JavaSoft").GetSubKeyNames();
Я тоже программно посмотрел на свои переменные среды, и ничего там, похоже, не указывает на присутствие JDK (он есть, как я сказал выше, он находится в реестре, и я использую его для разработки Java для программы, для которой я создаю установщик, как ни странно).
Любые идеи относительно того, как я могу определить, установлен ли JDK? Как я уже сказал, одной JRE будет недостаточно, поскольку я делаю некоторую компиляцию во время выполнения, для которой мне нужен JDK.
3 ответа
Похоже, я лаял не на то дерево (реестр). Я не понимал, что корень реестра зависит от платформы конфигурации моего приложения. Поскольку целевая платформа моего приложения была установлена на x86, все поиски начинались с узла Wow6432Node моего реестра. Изменение моей целевой платформы на «Any CPU» устранило это, и я могу программно получить доступ ко всем деревьям моего реестра, поскольку они отображаются графически в regedit.
Возможно, стоит отметить, что я использовал Visual C # 2010 Express для этого, поэтому изменение моей целевой платформы должно было выполняться путем прямого редактирования XML моего файла «.csproj», поскольку для этого нет параметров пользовательского интерфейса.
Если вы ищете Java Development Kit на машине, вы можете попробовать проверить переменную среды JAVA_HOME
, которая обычно указывает на корень установки JDK.
string javaHome = Environment.GetEnvironmentVariable("JAVA_HOME");
if (javaHome == null)
Console.WriteLine("JDK seems not to be present");
Попробуй это
System.out.println(System.getProperty("java.library.path"));
Если пустой, не следует устанавливать
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.