Невозможно установить JAVA_HOME после установки OpenJDK с помощью snap.

Вопрос или проблема

Я установил openjdk с помощью sudo snap install openjdk, и хочу установить JAVA_HOME, чтобы активировать команды, связанные с java, в терминале, но это не работает.

Я попробовал следующее:

  1. создание скрипта java_home.sh в /etc/profile.d с содержимым JAVA_HOME=/snap/openjdk/current/jdk и выход/вход, но это не работает
  2. создание скрипта java_home.sh в /etc/profile.d с содержимым source $(openjdk) и выход/вход, но это не работает
  3. добавление JAVA_HOME=/snap/openjdk/current/jdk export PATH=$PATH:$JAVA_HOME в ~/.bashrc, и открытие нового терминала, но это все еще не работает

Я не знаю, что попробовать или что делать, поэтому если кто-то может помочь, я буду очень благодарен.

Вывод ls /snap/openjdk – это 909 current.

Вывод cat $(openjdk):

# Используйте этот файл для переменных окружения OpenJDK и псевдонимов
export JAVA_HOME=/snap/openjdk/909/jdk
export MANPATH=/snap/openjdk/909/jdk/man:
alias java="openjdk.java"
alias javac="openjdk.javac"
alias javadoc="openjdk.javadoc"
alias jar="openjdk.jar"
alias jarsigner="openjdk.jarsigner"
alias jlink='openjdk.jlink'
alias jpackage="openjdk.jpackage"
alias jwebserver="openjdk.jwebserver"

Когда я использую source openjdk, это начинает работать, но я не хочу делать это каждый раз и хочу, чтобы это загружалось повсюду в качестве переменной окружения.

Нашел решение на developpaper.com


sudo snap install openjdk

openjdk 

//генерировать .env
// в моем случае /var/snap/openjdk/1005/openjdk.env

/**
# Используйте этот файл для переменных окружения OpenJDK и псевдонимов
export JAVA_HOME=/snap/openjdk/1005/jdk
export MANPATH=/snap/openjdk/1005/jdk/man:
alias java="openjdk.java"
alias javac="openjdk.javac"
alias javadoc="openjdk.javadoc"
alias jar="openjdk.jar"
alias jarsigner="openjdk.jarsigner"
alias jlink='openjdk.jlink'
alias jpackage="openjdk.jpackage"
alias jwebserver="openjdk.jwebserver"
*/

добавить .env в файл /etc/profile 

source /etc/profile

java --version

openjdk 18.0.2 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+9-snap)
OpenJDK 64-Bit Server VM (build 18.0.2+9-snap, mixed mode, sharing)

https://developpaper.com/linux-system-uses-snap-to-install-jdk/

Все, что нужно ОС, чтобы найти java, находится в каталогах /snap/openjdk/909 или /snap/openjdk/current, просто нужны правильные пути.

Таким образом, ответ на вопрос:

Создайте java_home.sh в /etc/profile.d/ и добавьте в ш:

export JAVA_HOME=/snap/openjdk/909/jdk
export PATH=$PATH:$JAVA_HOME/bin

выполните вход/выход, и java --version будет работать.

Лучший способ – это ‘source’ /var/snap/openjdk/current/openjdk.env в /etc/bash.bashrc. Поскольку вы можете использовать sudo, я предположу, что вы можете отредактировать его с помощью nano.

sudo nano /etc/bash.bashrc

Затем, внизу файла, подключите env файл, написав

source /var/snap/openjdk/current/openjdk.env 

Использовать ‘current’, а не номер версии, – хорошая практика. В будущем, если вы обновите OpenJDK, ‘current’ все равно будет работать. Также нет необходимости выходить или перезагружать. Любой вновь открытый терминал или приложение, которое зависит от bashrc, получит псевдонимы и экспорты.

Примечание: вместо редактирования /etc/bash.bashrc вы можете выбрать редактировать ~/.bashrc, если хотите сделать это видимым только для своей учетной записи.

Мы выполнили:

sudo snap install openjdk

Запуск “openjdk” показывает путь к openjdk.env:

openjdk

Вместо этого вы можете просто “source” содержимое .env файла. Это мой случай здесь:

source /var/snap/openjdk/2020/openjdk.env

Теперь можно проверить:

java --version

Ответ или решение

Недавно вы столкнулись с проблемой установки переменной окружения JAVA_HOME после установки OpenJDK через Snap. Данная ситуация довольно распространена, и в этом ответе мы подробно рассмотрим, как правильно настроить JAVA_HOME и другие переменные окружения без необходимости повторного ввода команд каждый раз при открытии терминала.

Понимание установки OpenJDK через Snap

Когда вы устанавливаете OpenJDK с помощью команды:

sudo snap install openjdk

вы получаете набор инструментов для разработки на Java, которые находятся в специфическом каталоге Snap, обычно по пути, подобному /snap/openjdk/961 (где 961 — это номер версии). Важно отметить, что файлы конфигурации и выполняемые файлы находятся по другому пути, что может вызвать трудности при попытке установить переменные окружения.

Проблема с JAVA_HOME

Вы уже пробовали несколько подходов, чтобы установить JAVA_HOME, но, по-видимому, они не сработали:

  1. Создание скрипта java_home.sh в /etc/profile.d с счетчиком пользователем, который не выполнялся.
  2. Попытка модификации ~/.bashrc без эффекта после перезапуска терминала.

Правильная настройка JAVA_HOME

Следовательно, давайте перейдем к правильной настройке переменной JAVA_HOME с учетом специфики Snap.

Шаг 1: Создание и настройка скрипта

Создайте файл java_home.sh в /etc/profile.d/ с следующими строками:

export JAVA_HOME=/snap/openjdk/current/jdk
export PATH=$PATH:$JAVA_HOME/bin

Это действие должно делать JAVA_HOME доступным для всех пользователей. При этом необходимо убедиться, что путь /snap/openjdk/current/jdk актуален, так как вы можете видеть другое подключение в своем Snap.

Шаг 2: Проверка и перезагрузка

После того как вы создали и сохранили файл, выполните следующую команду, чтобы убедиться, что он доступен:

source /etc/profile

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

java --version

Альтернативная стратегия: использование .env файла

Другой способ, который был упомянут в вашем вопросе — использование файла .env.

  1. Сначала выполните команду:
openjdk

В результате будет сгенерирован файл .env, который обычно находится в пути /var/snap/openjdk/<версия>/openjdk.env.

  1. Теперь просто добавьте строчку для загрузки этого файла:
source /var/snap/openjdk/current/openjdk.env

Эта команда может быть добавлена в /etc/bash.bashrc, чтобы изменения были доступны всем пользователям. Для редактирования файла используйте следующий набор команд:

sudo nano /etc/bash.bashrc

В конце файла добавьте:

source /var/snap/openjdk/current/openjdk.env

Заключение

Используя одно из описанных решений, вы сможете корректно настроить переменные окружения для Java, что позволит вам использовать её инструменты из любой точки системы. Таким образом, вы не только исключите необходимость ручного задания JAVA_HOME в терминале, но и сможете без проблем работать с Java-приложениями и библиотеками в вашем окружении.

Оцените материал
Добавить комментарий

Капча загружается...