Общесистемный способ установить или получить $ JAVA_HOME в Ubuntu?

8

Интересно, предоставляет ли сама Ubuntu общесистемный способ поиска тока JAVA_HOMEили есть правильное место для настройки JAVA_HOME?

Mac OS X преуспевает в этом, поскольку /usr/libexec/java_homeкоманда возвращает текущее значение JAVA_HOME. Но в Ubuntu материалы, которые я обнаружил, всегда указывали мне на $JAVA_PATHуказание статического пути, который хранится в ~/.bash_profile.

Я думаю, однако, у этого подхода есть несколько недостатков:

  1. После обновления Java номер мини-версии изменится, что сделает статический путь более недоступным.
  2. После изменения JRE, используемого в моей системе с update-alternatives, я должен изменить $JAVA_HOMEв .bash_profile. Эта дополнительная работа раздражает.
  3. Некоторые $JAVA_HOME-обязательные программы, вообще не в курсе .bash_profile. Я должен установить $JAVA_HOMEв их сценарий запуска, поэтому простой и простой способ получить $JAVA_HOMEмне кажется критически важным.

Ну, любой совет приветствуется. Спасибо.

Цзяньвэнь В.
источник

Ответы:

6

Немного странно, но добавьте эту строку в вашу /etc/profileнастройку для всей системы:

export JAVA_HOME=$(dirname $(dirname $(readlink -e /usr/bin/javac)))

источник
Некоторым системным администраторам нравится возиться с PATH, поэтому / usr / bin не обязательно выглядит в первую очередь. Чтобы быть уверенным, что вы выбираете путь к версии, которую вы на самом деле запустите, лучше сделать повторный взлом: export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
SimonB
это работает, если путь существует. Есть ли способ заставить его замолчать на системах, которые не имеют Java?
greggles
как это сделать в Mac? «readlink -e» не работает.
Артанис Зератул
1

Вы можете установить переменные окружения /etc/environment, которые будут настроены PAM. Также должны быть символические ссылки, /usr/lib/jvmкоторые не меняются с небольшими выпусками.

JAVA_HOME=/usr/lib/jvm/java-6-sun
mgorven
источник
0

Установить путь системного профиля

Отредактируйте системный путь к файлу / etc / profile

sudo gedit /etc/profile

Добавьте следующие строки в конец

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH

Для http://javaandme.com/ для полного руководства по установке.

Пратап Сингх
источник
0

Если вы уверены, что команда java может быть вызвана, разве это не сработает для вас?

export JAVA_HOME=$(dirname $(java -XshowSettings:properties -version 2>&1 | grep 'java\.home' | awk '{ print $3 }'))
mlvnd
источник
ОП ищет способ настройки $JAVA_HOMEвсей системы, а не только в текущей оболочке.
Селада,
0

Принятое решение пользователя u131342 предполагает, что на сервере определенно установлена ​​Java. В случае, если вы добавите это в централизованный скрипт для многих серверов, это выдаст несколько ошибок, таких как:

dirname: missing operand
Try 'dirname --help' for more information.

Чтобы избежать этого и установить JAVA_HOME, только если на сервере есть среда Java, небольшое улучшение:

if [ -f "$(which javac)" ]; then
    export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
fi

Я также включил изменения из SimonB, whichчтобы найти место установки.

greggles
источник
Могу ли я положить это в /etc/environment?
Джин Квон