Установка JAVA_HOME в Linux для всех пользователей: руководство

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для задания переменной JAVA_HOME всем пользователям системы нужно внести изменения в файл /etc/environment:

Bash
Скопировать код
sudo sh -c 'echo JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 >> /etc/environment'

Чтобы изменения вступили в силу, выполните следующую команду:

Bash
Скопировать код
source /etc/environment

Либо задайте переменную с помощью файла java_home.sh, который находится в /etc/profile.d:

Bash
Скопировать код
sudo sh -c 'echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" > /etc/profile.d/java_home.sh'

Проверить корректность установки можно с помощью команды:

Bash
Скопировать код
echo $JAVA_HOME && echo $PATH
Кинга Идем в IT: пошаговый план для смены профессии

Как определить путь установки Java

Путь установки Java может отличаться. Вы могли установить Java на свой компьютер в другую директорию. Определить путь установки можно так:

Bash
Скопировать код
find /usr/lib/jvm/ -name "java-*" -type d

Используйте найденный путь при установке JAVA_HOME, следуя инструкциям выше.

Как сделать обновление JAVA_HOME мгновенным

Хотите, чтобы изменения вступали в силу немедленно, не требуя перезагрузки сессии? Просто выполните целевую команду:

Bash
Скопировать код
source /etc/profile

Для обновления JAVA_HOME в реальном времени добавьте в файл java_home.sh строку:

Bash
Скопировать код
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac::')

Это позволит обновить путь JAVA_HOME сразу после обновления Java.

Как работать с несколькими версиями Java

Если у вас установлено несколько версий Java, вы можете воспользоваться командой update-alternatives и настроить JAVA_HOME следующим образом:

Bash
Скопировать код
update-alternatives --config java

Права доступа для исполняемого скрипта

Для исполнения скриптов из директории /etc/profile.d/ требуются соответствующие права:

Bash
Скопировать код
sudo chmod +x /etc/profile.d/java_home.sh

В результате выполнения данных действий все пользователи получат доступ к среде Java.

Визуализация

Установка JAVA_HOME может быть описана как поиск сокровища:

Markdown
Скопировать код
1. Создайте "карту сокровищ": `sudo nano /etc/profile.d/jdk.sh`
2. Откройте "сундук с сокровищами": `export JAVA_HOME=/path/to/java`
3. Отправьте "сокровище искателям": `export PATH=$PATH:$JAVA_HOME/bin`
4. Приведите "карту" в порядок: `sudo chmod +x /etc/profile.d/jdk.sh`
5. Теперь каждый "искатель приключений" при старте системы будет иметь эту "карту"!

Таким образом, каждый пользователь будет осведомлён о JAVA_HOME при входе в систему.

Синхронизация через профайлы для единообразного пользовательского опыта

Переменная JAVA_HOME должна быть определена одинаково в файле .bashrc и /etc/profile для обеспечения комфортной работы:

Bash
Скопировать код
echo "export JAVA_HOME=$JAVA_HOME" >> ~/.bashrc
echo "export PATH=$PATH:$JAVA_HOME/bin" >> ~/.bashrc
source ~/.bashrc

Таким образом, мы настраиваем среду для интерактивных оболочек и отдельных пользователей.

Корректное взаимодействие Java и Maven

Неправильно установленная переменная JAVA_HOME может привести к ошибкам при сборке с Maven. Чтобы этого избежать, убедитесь, что Maven использует верный путь JAVA_HOME:

Bash
Скопировать код
mvn -version

Путь, указанный в JAVA_HOME, должен соответствовать пути, выводимому этой командой.

Полезные материалы

  1. Установка JDK и настройка JAVA_HOME – официальное руководство от Oracle по настройке переменной JAVA_HOME для Unix-систем.
  2. EnvironmentVariables – Community Help Wiki – подробная инструкция по настройке переменной окружения JAVA_HOME на Ubuntu.
  3. Tutorial | DigitalOcean – руководство от DigitalOcean по установке JAVA_HOME на Ubuntu.
  4. Java – ArchWiki — полное руководство по настройке JAVA_HOME на Arch Linux на ArchWiki.
  5. IBM Developer — учебник от IBM по установке JAVA_HOME на UNIX-системах.