Есть ли библиотека Java, которая ищет JVM на текущем компьютере?

У меня есть приложение Java, которое работает на компьютере разработчика, на котором установлено несколько JVM. Это приложение вызывает дочерние приложения Java и (в зависимости от дочернего приложения) должно выбрать подходящую JVM из всех доступных JVM.

JVM дочернего приложения не обязательно будет JVM, используемой родительским приложением. Например, пользователь, возможно, запустил родительское приложение с использованием OpenJDK 1.7.0, но хочет запустить устаревший инструмент как дочерний процесс, и этот инструмент требует API-интерфейсы Sun и, следовательно, должен быть Sun JDK.

Существует ли библиотека, которая будет выполнять разумную работу по поиску JVM на моем локальном компьютере и предоставит некоторый API для запроса информации о них, чтобы при запуске моего дочернего процесса я мог выбрать подходящую JVM?

Я надеюсь, что смогу сделать что-то вроде:

public Jvm chooseAvailableJvmForDevTool() {
  for (Jvm jvm : SomeLibrary.pollJvms()) {
    if (jvm.getVersion().getMinor() == 6 && jvm.isHotspot() && jvm.isJDK()) {
      return jvm;
    }
  }
  throw new UnsupportedOperationException("This tool requires a Sun Hotspot 1.6 JDK");
}

Я не ожидаю, что такая библиотека найдет все JVM, но было бы неплохо, если бы она попыталась найти некоторые из них в очевидных местах. Например, на компьютере с Windows я бы надеялся, что он по крайней мере будет выглядеть в C:\Program Files\Java, а на компьютере с Linux он будет выглядеть в /usr/lib/jvm. Если я могу дать библиотеке некоторые вероятные места, где разработчики в моей компании хотят установить свои JDK, тем лучше. (Например, некоторые разработчики Windows защищенно устанавливают Java где-нибудь, кроме "C:\Program Files\Java", на тот случай, если они используют инструмент, который должным образом не экранирует пространство в "Program Files".)

Этот вопрос является почти дубликатом этого двухлетнего вопроса... Как программно получить все установленные Java JVM (не по умолчанию) с использованием Java?

... но я (заново) спрашиваю в надежде, что за прошедшие два года кто-то, возможно, взялся за создание библиотеки с открытым исходным кодом, чтобы мы могли извлечь выгоду из улучшений. Кто-нибудь знает о таком проекте? (Или может привести убедительный аргумент, почему такая библиотека была бы очень плохой идеей?)

0 ответов

Другие вопросы по тегам