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

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

9 ответов

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

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

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

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

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

C:\somedir\bin\java.exe

или может иметь это на вашем пути.

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

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

JAVA_HOME переменная среды

Он должен быть настроен на другую операционную систему. Проверьте следующие ссылки.

Также смотрите здесь для получения дополнительной информации.

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.

Чтобы понять назначение переменной среды, вам нужно сначала понять, какие программы ищут и считывают значение этой переменной. Некоторые примеры: Apache Tomcat, Apache Maven, Gradle, Jenkins и т. д. Если вы заметили, большинство из них являются инструментами разработки, и поэтому в основном они указывают на JDK вместо JRE.

Java-приложения, ориентированные на потребителя, не читают переменную, и им просто нужно знать, где находится JVM, и поэтому местоположение JVM (каталог) необходимо добавить в переменную. Это делается автоматически при установке программного обеспечения Java. Всякий раз, когда вы пытаетесь запустить приложение Java, дважды щелкнув приложение или через командную строку, ваша операционная система читаетPATHпеременная для поиска и запуска JVM, и она не ищетJAVA_HOMEпеременная.

JAVA_HOME используется в MacOS для определения того, какую JRE использовать, когда вы пытаетесь запустить Java, Javac и т. д. Исполняемый файл Java в PATH — это просто прокси-сервер, который затем запускает Java из JAVA_HOME.

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

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