Как установить JAVA_HOME для Java?

303

Я установил версию Java. Как мы можем $JAVA_HOMEправильно установить переменную среды?

Гаурав Агарвал
источник

Ответы:

422

Вы можете установить JAVA_HOMEв систему, /etc/profileкак Petronilla Escarabajo предлагает. Но предпочтительным местом для JAVA_HOMEили любой системной переменной является /etc/environment.

Откройте /etc/environmentлюбой текстовый редактор, например nanoили, geditи добавьте следующую строку:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(Java-путь может быть другим)

Используйте sourceдля загрузки переменных, запустив эту команду:

source /etc/environment

Затем проверьте переменную, выполнив эту команду:

echo $JAVA_HOME

Обновить

Обычно большинство Linux-систем по умолчанию используют / etc / environment. Если ваша система этого не делает, добавьте следующую строку ~/.bashrc(Спасибо @pje)

source /etc/environment
Манула Вайдьянатха
источник
2
Когда я попытался запустить Android Studio (в которой в качестве основы используется IntelliJ IDEA), у меня появилось сообщение об ошибке, очень похожее на сообщение @ advocate: «« tools.jar », по-видимому, отсутствует в пути к классам Android Studio». Безуспешно поигравшись с JAVA_HOME, я решил взглянуть на studio.sh, оболочку, которая запускает Android Studio. Как дикое предположение, я установил для JDK_HOME то же значение, которое ожидается для JAVA_HOME, и вуаля! Устанавливается без особых проблем.
Хилтон Фернандес
3
Для тех, кто занимается разработкой программного обеспечения, не помещайте свой JAVA_HOME в / etc / environment, если вы не хотите перезагружаться при каждом переключении версий JDK.
HDave
2
Это временное решение, как отметили другие. Никто не захочет запускать source каждый раз, когда перезапускает свой bash.
yuranos87
6
Как отмечали другие, это не происходит между терминальными сессиями. Для решения этой проблемы я просто добавил строку source /etc/environmentв начало моего конфигурационного файла bash, ~/.bashrcчтобы он загружал все мои параметры среды при запуске. Работаю для меня до сих пор.
PJE
2
@sedulam Я обновил ответ
Манула Waidyanatha
79

Чтобы установить JAVA_HOMEпеременную среды, сделайте следующее:

  1. Запустите терминал, нажав Ctrl+ Alt+ Tна клавиатуре.
  2. Введите следующую команду:
    $gksudo gedit /etc/environment
  3. В зависимости от того, где вы установили Java, вам потребуется указать полный путь. Для этого примера я установил Oracle JDK 7 в /usr/lib/jvm/java-7-oracleкаталог.
    Прокрутите до конца файла и введите следующее:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Сохраните свой файл и выйдите из Gedit .
  5. Наконец, перезагрузите системный PATH с помощью следующей команды:
    $. /etc/environment

Вышеуказанный метод избавит вас от необходимости запускать команды каждый раз, когда вы входите в свой компьютер.

Petronilla Escarabajo
источник
5
Как делает. / etc / environment работает?
Судип Бхандари
1
exportНужно ли добавлять команду в /etc/environment?
пкарамол
@pkaramol Мне пришлось добавить экспорт JAVA_HOME на 16.04LTS, чтобы он загружался при запуске.
adeen-S
3
@ adeen-s Вы добавили exportв строку, /etc/environmentи это помогло? Этот файл содержит определения переменных, проанализированных как =пары -delimited имя-значение; его содержимое не выполняется как команды. (См man pam_env.) Поэтому, если вы не рассматриваете файл отдельно, как если бы он был скриптом (например, путем перехода /etc/environmentк bash's ./ sourcebuiltin), я бы не ожидал, что это сработает.
Элия ​​Каган
> Как это сделать. / etc / environment работает? -. (точка) загружает команды из файла askubuntu.com/a/232938/189965
Роман Беккиев
37

Если вы не знаете путь и у вас установлен только openJDK, вы можете набрать, update-alternatives --config javaи вы должны найти путь. Чтобы установить переменную, вы можете написать, JAVA_HOME=<PATH>а затем export JAVA_HOME. Обратите внимание, что при объявлении переменной нет места. Чтобы проверить, сохранена ли переменная, просто введите echo $JAVA_HOMEдля подтверждения.

Erro
источник
Кажется, это было бы статично. Если я удалю openjdk-7 и установлю openjdk-9, разве JAVA_HOME не укажет на неправильное место? Как это можно сделать динамичным?
DavidJ
3
Вы вручную меняете его. Еще раз, ВЫ становитесь динамичными ...
HDave
Что означает @HDave, так это то, что в некоторых случаях вы можете захотеть, чтобы JAVA_HOME указывал на конкретную версию Java, поэтому динамическое обновление JAVA_HOME может оказаться не тем, что вам нужно.
Мацей
мне нравится этот ответ Я проверил с эхом и вижу мой путь. Тем не менее, я запутался, почему я все еще получаю, что переменная окружения JAVA_HOME не установлена, когда я запускаю mvn -version
Winnemucca
1
Я написал этот ответ назад, когда я был более невежественным. Установка переменной, как описано, повлияет только на текущий сеанс терминала и не будет сохраняться. Правильный способ, update-alternatives --install <link> <name> <target> <priority> например, запустить :update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro