Нахождение JRE из C ++ (windows) - PullRequest
0 голосов
/ 24 июля 2011

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

Тем не менее, я все чаще обнаруживаю, что, похоже, не существует устоявшегося способа вызова Java из НИЧЕГО.

  1. Больше не существует java.exe в system32, так что это не гарантируется.
  2. На большинстве компьютеров в HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER есть запись реестра, которая определяет подраздел JRE, а затем значение JavaHome. Это работает на большинстве компьютеров, но на моем новом компьютере (новая установка Java, созданная менее двух недель назад) этих реестров не существует. В CURRENT_USER есть запись JRE, но нет JavaHome.
  3. Переменная среды JAVA_HOME не всегда установлена ​​или установлена ​​неправильно. В частности, на машинах, на которых не установлен JDK.
  4. Я, очевидно, не могу полагаться на установку Java в C: / Program Files / Java.

Насколько я могу быть в состоянии надежно вызвать Java-программу из C ++? Или в этом отношении откуда угодно? Я мог бы заставить мою программу попробовать все четыре возможных метода, но что, если они появятся пустыми?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 24 июля 2011

Во-первых, настоятельно рекомендуется найти местоположение JRE, установить требования к памяти и тому подобное, используя один из доступных языков сценариев.Из-за того, что язык файлов BAT относительно беден, вы можете использовать VBS или JScript и запускать их, используя утилиту с именем cscript.

Относительно того, где находится JRE.Обычно JRE можно найти в реестре.Например, на моей машине я вижу следующую запись.HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_26

Возможно, у вас более новая установка ... В любом случае, проверьте запись для установки Java здесь: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall В моем случае у меня есть запись {26A24AE4-039D-4CA4-87B4-2F83216012FF}, где ключ с именем InstallLocation содержит путь к Java Home.

Следующий способ - проверить переменную домашней среды Java.

Последний способ - выполнить поиск в% ProgramFiles%

1 голос
/ 24 июля 2011

В вашем установщике попробуйте все методы, возможно, вы найдете более одной JRE, а может и нет. Затем представьте обнаруженные JRE и позвольте выбрать, какого пользователя хотите использовать. Пользователь также может указать JRE, особенно когда установщик не нашел его.

0 голосов
/ 24 июля 2011

Eclipse использует C shim (eclipse.exe) для создания JVM.Вы можете взглянуть на этот исходный код и адаптироваться.

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