В чем причина существования переменной среды JAVA_HOME?

Множество приложений на основе Java требует установить переменную env JAVA_HOME. Какова цель этой переменной?

Ответ 1

Переменные среды - это строки, содержащие информацию, такую ​​как диск, путь или имя файла.

Переменная среды JAVA_HOME указывает на каталог, в котором среда выполнения Java (JRE) установлена ​​на вашем компьютере.

Ответ 2

Цель состоит в том, чтобы указать, где установлена ​​Java. $JAVA_HOME/bin/java должен выполнять среду выполнения Java.

Ответ 3

При запуске Java-программы вам нужно сначала запустить JVM, как правило, это выполняется путем запуска исполняемого файла, в Windows это java.exe. Вы можете получить это множеством способов, например, просто передавая полный путь:

C:\somedir\bin\java.exe

или может иметь его на вашей PATH.

В качестве аргументов командной строки указываются некоторые файлы классов или файлы Jar, содержащие файлы классов, которые являются вашей программой. Но этого недостаточно, для самого java.exe нужны различные другие ресурсы, не в последнюю очередь все библиотеки Java. Установив переменную среды JAVA_HOME, вы указываете, где должны быть найдены JRE и, следовательно, все эти ресурсы времени исполнения. Вы должны убедиться, что конкретная Java, которую вы выполняете, соответствует настройке JAVA_HOME.

Вам также может потребоваться поставить JAVA_HOME\bin на раннем этапе вашего пути, чтобы, если java.exe порождает копию самого себя (например, для компиляции JSP), она подбирает правильную версию.

Ответ 5

JAVA_HOME позволяет запускать любую из нескольких установок Java. Даже если у вас сначала есть /usr/lib/jvm/java-1.8.0/bin/java в вашей переменной PATH, полезно иметь возможность сказать JAVA_HOME=/usr/lib/jvm/java-1.5.0 и иметь стандартную "java", с которой вы запускаете программы, вместо этого используйте другую, в зависимости от настроек среды. Это позволяет программисту использовать необходимую ему Java, даже если она не установлена в обычном системном расположении, и тестировать или обеспечивать обратную совместимость с этой альтернативной версией. И это не уязвимо для сброса в PATH другой установленной программой, такой как обновление основной версии для самой java.

Ответ 6

Согласно @dirai здесь JAVA_HOMEиспользуется не самой Java, а некоторыми сторонними инструментами, такими как, например, Apache Tomcat. Однако большинство приложений будут работать без установки этой переменной, но некоторые могут показывать непредвиденное поведение.

Ответ 7

JAVA_HOME используется для установки среды, которая позволит вам запускать Java-программы на вашем компьютере или ПК после установки JDK (Java Development Kit)