Несколько версий Java, работающих одновременно под Windows

У нас есть несколько приложений, работающих на Java 5, и теперь мы хотим добавить приложение на основе Java 6. Могут ли обе версии Java жить вместе под Windows?

Есть ли какая-либо панель управления для установки соответствующей версии Java для разных приложений или любого другого способа настройки, какая версия Java будет использоваться для запуска этого конкретного приложения?

Ответ 1

Конечно, вы можете использовать несколько версий Java под Windows. И разные приложения могут использовать разные версии Java. Как запускается ваше приложение? Обычно у вас будет командный файл, где есть что-то вроде

java ...

Это приведет к поиску исполняемого файла Java с использованием переменной PATH. Поэтому, если Java 5 является первым в PATH, у вас будут проблемы с запуском приложения Java 6. Затем вы должны изменить пакетный файл, чтобы использовать определенную версию Java, например. определяя переменную среды JAVA6HOME со значением C:\java\java6 (если в этом каталоге установлена ​​Java 6) и измените командный файл, вызывающий

%JAVA6HOME%\bin\java ...

Ответ 2

Абсолютно возможно установить бок о бок несколько версий JRE/JDK. Кроме того, вам не нужно делать ничего особенного, чтобы это произошло, поскольку Sun создает для каждой папки разные (в разделе Program Files).

Нет панели управления, чтобы проверить, какая JRE работает для каждого приложения. В принципе, JRE, который будет работать, будет первым в вашей переменной среды PATH. Вы можете изменить эту переменную или переменную JAVA_HOME или создать определенные файлы cmd/bat для запуска приложений, которые вы хотите, каждый с другой JRE в пути.

Ответ 3

Я был потрясен неуклюжью идей CLASSPATH, JAVA_HOME и PATH в Windows, чтобы отслеживать файлы Java. Я приехал сюда из-за нескольких JRE и как с ним контактировать. Без отвращения информации от парня, гораздо более умного, чем я, я бы скорее указал на его статью по этому вопросу, которая для меня прекрасно решает.

Статья: Ted Neward: Несколько Java-домов: предоставление Java-приложений своим собственным JRE

При экспоненциальном росте Java в качестве языка разработки на стороне сервера возникла равноценная экспоненциальный рост в инструментах разработки, средах, инфраструктурах и расширениях Java. К сожалению, не все эти инструменты прекрасно сочетаются друг с другом при одной и той же установке Java VM. Некоторые требуется среда, совместимая с Servlet 2.1, для некоторых требуется 2.2. Некоторые из них работают только под JDK 1.2 или выше, некоторые под JDK 1.1 (и не выше). Некоторые из них требуют пакетов "com.sun.swing" от pre-Swing 1.0 дней, другие - имена пакетов javax.swing.

Хуже того, эта проблема может быть найдена даже внутри корпоративного предприятия, поскольку системы, разработанные с использованием Java всего лишь шесть месяцев назад может внезапно "не работать" из-за установки некоторого расширения Java требуемый новым (казалось бы, не связанным) выпуском приложения. Это может осложнить развертывание Java приложений через корпорацию, а также побуждать клиентов задаваться вопросом, почему, через пять лет после начало печально известного "Проблемы с установкой этого приложения-break-my-system" началось с схем Microsoft DLL, мы все еще не продвинулись дальше этого. (На самом деле, новая инициатива .NET фактически пытается решить проблему печально известная проблема "DLL-Hell".)

В этом документе описывается, как настроить установку Java таким образом, чтобы данное приложение получало свои собственные, частный, JRE, позволяющий нескольким Java-средам сосуществовать без привлечения клиентов (или системы администраторы) безумные...

Ответ 4

Или используйте ссылки. Хотя довольно сложно обновить PATH в рабочей среде, легко воссоздать ссылку на новую версию JRE/JDK. Итак:

  • установите разные версии JDK, которые вы хотите использовать
  • создайте ссылку на эту папку либо соединение, либо встроенную команду mklink
  • установите PATH в ссылку
  • Если используется другая версия java, удалите ссылку, создайте новую, скрипты PATH/JAVA_HOME/hardcoded остаются нетронутыми.

Ответ 5

Должно быть возможно изменить настройку переменной среды JAVA_HOME по-разному для определенных приложений.

При запуске из командной строки или из пакета script вы можете использовать set JAVA_HOME=C:\...\j2dskXXX для изменения среды JAVA_HOME.

Возможно, вам также необходимо изменить переменную среды PATH, чтобы использовать правильный двоичный код java. Для этого вы можете использовать set PATH=%JAVA_HOME%\bin;%PATH%.

Ответ 6

Вызов Java с "java -version: 1.5" и т.д. должен запускаться с правильной версией Java. (Очевидно, замените 1.5 нужной версией.)

Если Java правильно установлена ​​в Windows, для каждой версии, хранящейся в реестре, есть пути к vm, поэтому вам не нужно возиться с версиями среды в Windows.

Ответ 7

Если вы используете Java Web Start (вы можете запускать приложения с любого URL-адреса, даже локальной файловой системы), он позаботится о поиске правильную версию для вашего приложения.