Нам нужно провести различие между двумя переменными среды, которые обсуждаются здесь взаимозаменяемо. Одним из них является переменная JAVA_HOME . Другой путь переменная . Любой процесс, который ссылается на переменную JAVA_HOME, ищет путь поиска в JDK, а не в JRE. Использование переменной JAVA_HOME не предназначено для самого компилятора Java. Компилятор знает свое местоположение. Переменная предназначена для другого программного обеспечения, чтобы легче найти компилятор. Эта переменная обычно используется программным обеспечением IDE для компиляции и сборки приложений из исходного кода Java. Напротив, интерпретатор CMD в Windows и многие другие программы первого и стороннего производителя ссылаются на переменную Path, а не на переменную JAVA_HOME.
Вариант использования 1: Компиляция из CMD
Так, например, если вы не используете какое-либо программное обеспечение IDE, и вы просто хотите иметь возможность компилировать из CMD, независимо от вашего текущего рабочего каталога, тогда вам нужно правильно установить переменную Path. В вашем случае вам даже не нужна переменная JAVA_HOME. Поскольку CMD использует Path, а не JAVA_HOME, чтобы найти компилятор Java.
Вариант использования 2: Компиляция из IDE
Однако, если вы будете использовать некоторые IDE программного обеспечение, то вы должны смотреть на документации в первую очереди. Это может потребовать установки JAVA_HOME, но может также использовать другое имя переменной для той же цели. За эти годы стандартом де-факто был JAVA_HOME, но это не всегда так.
Вариант использования 3: Компиляция из IDE и CMD
Если в дополнение к программному обеспечению IDE вы также хотите иметь возможность компилировать из CMD, независимо от вашего текущего рабочего каталога, то в дополнение к переменной JAVA_HOME вам также может понадобиться добавить путь поиска JDK к переменной Path.
JAVA_HOME vs. Path
Если ваша проблема связана с компиляцией Java, вы хотите проверить переменную JAVA_HOME и путь (где это применимо). Если ваша проблема связана с запуском Java-приложений, вы хотите проверить переменную Path.
Переменная пути используется универсально во всех операционных системах. Поскольку он определяется системой и потому что это переменная по умолчанию, которая используется для поиска JRE, почти никогда не возникает проблем с запуском Java-приложений. Особенно в Windows, где установщики программного обеспечения обычно все настраивают для вас. Но если вы устанавливаете вручную, самое безопасное - это вообще пропустить переменную JAVA_HOME и просто использовать переменную Path для всего, как для JDK, так и для JRE. Любая последняя версия программного обеспечения IDE должна быть в состоянии подобрать и использовать ее.
Symlinks
Символьные ссылки могут предоставить еще один способ ссылки на путь поиска JDK путем совмещения одной из существующих переменных среды.
Я не уверен насчет предыдущих версий Oracle / Sun JDK / JRE, но по крайней мере установщик для jdk1.8.0_74 добавляет путь поиска C:\ProgramData\Oracle\Java\javapath
к переменной Path, и помещает его в начало строкового значения. Этот каталог содержит символические ссылки на java.exe, javaw.exe и javaws.exe в каталоге JRE.
Таким образом, по крайней мере с Java 8 JDK и, по-видимому, с автономным Java 8 JRE, для JRE не требуется конфигурировать переменные среды. Пока вы используете установочный пакет для его настройки. Однако в вашей установке Windows могут быть различия. Обратите внимание, что Oracle JRE поставляется в комплекте с JDK.
Если вы когда-нибудь обнаружите, что ваша конфигурация Java JDK использует неверную версию компилятора или она работает волшебным образом, без явного определения (без применения заклинания), то у вас может быть символическая ссылка где-то в переменных среды , Так что вы можете проверить символическую ссылку.