Ответ 1
Вы можете установить столько версий Java, сколько захотите.
Для установки было бы опасно изменить переменную среды локальная, например JAVA_HOME
, так как она может ссылаться на существующую установку Java.
Это не имеет ничего общего с предполагаемой "проблемой, зависящей от платформы".;)
Поскольку сценарии могут зависеть от JAVA_HOME
для запуска самих себя, опять же, для новой установки для Java будет изменяться JAVA_HOME
: все эти скрипты внезапно должны быть запущены с новой потенциально несовместимой JVM.
Кроме того, установив $JAVA_HOME/bin
или %JAVA_HOME%/bin
в свой путь, вы можете динамически изменить JAVA_HOME
на любую версию Java, которую хотите использовать, не имея большого значения с помощью переменной PATH.
Майкл Боргвардт сделал в комментариях интересный вопрос о последующей деятельности
Тем не менее, это не объясняет, почему установщик не устанавливает JAVA_HOME, когда он еще не установлен ранее.
Ответ прост:
Настройка не может знать, зависит ли script от JAVA_HOME
или не.
Значение: некоторые скрипты могут тестировать значение JAVA_HOME
, а если не заданы, обратитесь к другому JVM, установленному в другом месте (и не забывайте, что с помощью "install" можно ссылаться только на "скопированные": JDK/JRE не всегда устанавливается установкой)
Если вы установите JAVA_HOME
, это может нарушить поведение по умолчанию некоторых ваших скриптов.
Не желая нарушать гипотетические сценарии, зависящие от env var, которые не устанавливаются для меня бессознательно параноидальным - если это делает script, то, очевидно, WANTS использует другую JVM при установке - нет причин избегать что.
Ммм... Сладкий. Для решения массивных задач развертывания на ежедневной основе (для внутреннего применения в моем магазине), я могу заверить вас: это очень здраво "параноидальный" лечить. Когда вы развертываете (очень) большой набор пользователей, вы не хотите делать какие-либо предположения о своей платформе и конфигурациях. "ЧТОБЫ БЫТЬ" - это предположение, которое я бы не осмелился сделать (или я перенаправляю свой телефон к вашему;), и вы обрабатываете сердитые вызовы).
Например, у нас есть много сценариев, запускаемых с 1.4.2 JVM от солнца (JAVA_HOME не установлен на платформе разработки, путь по умолчанию установлен непосредственно в script), или с 1.4.2 от JRockit (JAVA_HOME
установленный, поскольку он является целевой целью интеграции, предпроизводственных и производственных платформ).
Но мы регулярно устанавливаем новый JDK1.6.x, поскольку мы используем его для запуска eclipse.
Предположим, что эти сценарии хотят, чтобы их набор JAVA_HOME
... и ничего больше не работает.
... На что Роберт Грант делает этого критика на месте:
Вы описываете сценарии, которые требуют одной конкретной версии, но все равно смотрите на глобальный JAVA_HOME. Это просто плохо продуманные скрипты.
Хотя это может быть или не быть правдой, это также точно иллюстрирует мою точку зрения:
"вы не хотите делать какие-либо предположения": никаких предположений на их платформе/настройках и никаких предположений об их "лучших практиках".
Первый может казаться параноидальным, последнее - обычным здравым смыслом: думая, что ваш продукт (здесь JDK-настройка) не сломает ничего в пользовательской среде, потому что пользователь "правильно" продумал свои скрипты... был бы сумасшедшим.
GvS предлагает:
Или у него просто есть возможность сделать это, отключено по умолчанию
Это означало бы еще один вариант включения в экраны настройки, который должен быть тщательно проверен пользователем и который может иметь непреднамеренные последствия, даже когда пользователь выбирает его, думая, что он знает, что он делает...
Это просто не стоит.