Позвольте мне просто повторить проблему, описанную @Steg
. У меня была аналогичная проблема с вашей. Я выполняю запрос ajax, который имеет 2 возможных ответа: один, который перенаправляет браузер на новую страницу и заменяет существующую HTML-форму на текущей странице новым.
blockquote>ИМХО это является реальной проблемой и должен быть официально распространен на существующие HTTP-стандарты.
Я считаю, что новым стандартом Http будет использоваться новый код состояния. значение: в настоящее время
301/302
сообщает браузеру перейти и получить содержимое этого запроса к новомуlocation
.В расширенном стандарте он скажет, что если ответ
status: 308
(просто пример), браузер должен перенаправить главную страницу на предоставленнуюlocation
.Это сказано; Я склонен уже имитировать это поведение future , и поэтому, когда необходим document.redirect, я отвечаю на сервер как:
status: 204 No Content x-status: 308 Document Redirect x-location: /login.html
Когда JS получает "
status: 204
", он проверяет существование заголовкаx-status: 308
и делает document.redirect на странице, представленной в заголовкеlocation
.Это имеет для вас какое-то значение?
Можно установить столько версий Java, сколько Вам нравится.
Это было бы опасно, чтобы установка изменила локальный переменная среды такой как JAVA_HOME
, так как это могло бы сослаться на существующую установку Java.
Это не имеет никакого отношения к предполагаемой "зависимой проблеме платформы". ;)
, Так как сценарии могли бы зависеть от JAVA_HOME
для запуска себя, снова, это будет иметь катастрофические последствия для новой установки Java для изменения JAVA_HOME
: все те сценарии должны были бы внезапно быть запущены с новой потенциально несовместимой JVM.
Плюс, установкой $JAVA_HOME/bin
или %JAVA_HOME%/bin
в Вашем пути, можно динамично измениться JAVA_HOME
на любую версию Java, который Вы хотите использовать, не имея необходимость для очень с Вашей переменной ПУТИ.
Michael Borgwardt сделал в комментариях вопрос интересного продолжения
однако, это не объясняет, почему установщик не устанавливает JAVA_HOME, когда он ранее не установлен вообще.
ответ прост:
установка не может знать, зависит ли сценарий уже от JAVA_HOME
или не .
Значение: некоторые сценарии могли протестировать на JAVA_HOME
значение, и если не набор, обратитесь к другой JVM, установленной в другом месте (и не забывайте, что "установкой", можно только обратиться к "скопированному": JDK/JRE не всегда устанавливается установкой)
, Если Вы устанавливаете JAVA_HOME
, который может разрушить поведение по умолчанию некоторых Ваших сценариев.
Не желание нарушить гипотетические сценарии, которые зависят от огибающего var, не устанавливаемого звук, бессмысленно параноидальный мне - Если сценарий делает это, то это ясно ХОЧЕТ использовать другую JVM, когда каждый установлен - никакая причина избежать этого.
Mmm... Сладкий. Для контакта с крупным развертывание проблемы ежедневно (для внутреннего приложения в моем магазине), я могу уверить Вас: это - очень нормальная "параноидальная" обработка иметь.
, Когда Вы развертываетесь к (очень) большой группе пользователей, Вы не хотите делать любое предположение об их платформе и конфигурациях. "ясно ХОЧЕТ", предположение, которое я не смел бы делать (или я перенаправляю свой телефон к Вашему ;) и Вы обрабатываете сердитые вызовы).
, Например, у нас есть много сценариев, который запускается с 1.4.2 JVM от солнца (JAVA_HOME не набор на платформе разработки, набор пути по умолчанию непосредственно в сценарии), или с 1.4.2 от JRockit (JAVA_HOME
набор, поскольку это - намеченная цель на интеграции, подготовке производства и производственных платформах).
, Но мы регулярно устанавливаем новый JDK1.6.x, так как мы используем его для запуска затмения.
Предполагают, что те сценарии хотят их JAVA_HOME
набор..., и ничто больше не работает.
... К которому Robert Grant делает этого критика на месте:
Вы описываете сценарии, которые требуют одной определенной версии, но все еще смотрят на глобальный JAVA_HOME. Это только что плохо продумало сценарии.
, В то время как это может или не может быть верно, который также иллюстрирует точно мой тезис:
"Вы не хотите делать любое предположение": никакое предположение на их платформе/настройках и никакое предположение на их "лучших практиках".
Первый может звучать параноидальным, последний является простым здравым смыслом: думание, что Ваш продукт (здесь установка JDK) ничего не повредит на среде пользователя, потому что пользователь "правильно" продумал свои сценарии..., было бы безумно.
GvS предлагает:
Или это могло просто иметь опцию сделать это, отключенный значением по умолчанию
, Который будет означать другую опцию включать в экраны установки, опция, которая должна быть тщательно рассмотрена пользователем, и которая может иметь непреднамеренные последствия, даже когда пользователь выбирает его, думая, что он знает то, что он делает...
Это просто не стоит того.
Я не думаю, что JAVA_HOME является конвенцией, изобретенной или поддерживаемой Sun.
Они, вероятно, помнят фиаско, которое было переменной среды ПУТИ К КЛАССУ ** слишком хорошо, и предпочтите оставаться ад далеко от переменных среды.
** Это было поощрено как основной способ установить путь к классу JVM в более раннем Java SDKs и литература, и привело к пользователю и различному питанию приложений с переменной среды, перезаписав изменения друг друга и в зависимости от взаимно противоречивого содержания.
vcvarsall.bat механизм является удобным способом для Visual C++ для предоставления консоли корректные переменные, не смешивая с переменными среды пользователя/системы. Однако это предполагает, что Installshield является единственным способом получить код на систему. JDK должен терпеть быть cut'n'pasted от одного местоположения до другого.
, Если Вы ищете java.exe , установщик Installshield должен поместить его в %windir %\system32 , таким образом, это доступно на ПУТИ.
можно получить некоторые подсказки о местоположении установленных приложений путем запросов реестра:
C:>REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6" /v JavaHome
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6
JavaHome REG_SZ C:\dev\Java\jdk1.6.0_05
Однако Вы не можете полагаться на это абсолютно, потому что это делает некоторые предположения о поставщике, версии и механизме установки.
Я не уверен, почему это, потому что установщики ясно решают подчиненные проблемы платформы (который является, конечно, смыслом JVM). Вы уверены, что не смешиваете JRE с JSDK?
, Возможно, существует путь к Вашей программе для поиска, где Java установлен (который был бы сценарием, который я предполагаю), и затем установите JAVA_HOME и возможно добавьте его к пути.
IBM, кажется уже, делает этот прием: http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21199220
Другое интересное сообщение, намекающее на различие между JRE и установками JSDK: http://confluence.atlassian.com/display/CONF26/Set+JAVA_HOME+variable+in+Windows
Hope это помогает.
Я предполагаю, что Java не хочет делать что-либо, что зависимо от платформы. В Windows пути к классам установлены по-другому по сравнению с LINUX/UNIX.