Назад | Перейти на главную страницу

Как определить JAVA_HOME в Debian / Ubuntu?

В Ubuntu можно одновременно использовать несколько JVM. По умолчанию выбирается update-alternatives. Но это не устанавливает JAVA_HOME переменная окружения из-за политика Debian.

Я пишу сценарий запуска (bash), который запускает Java-приложение. Этому java-приложению требуется JAVA_HOME переменная окружения. Итак, как получить путь к JVM, который в настоящее время выбирается update-alternatives?

Для JRE что-то вроде этого должно помочь:

JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Решение danadam может быть легко принято для получения пути JDK (т.е. не JRE) по мере необходимости:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
  • Ищет компилятор Java javac (вместо java), включенный в JDK (но не JRE).
  • Не имеет завершающего / (удалено sed s: / bin ... вместо s: bin ...)

export JAVA_HOME=$(dirname $(dirname $(readlink -f /usr/bin/java)))

В .bashrc мне пригодилось.

Итак, вы говорите, что эта команда для вас ничего не делает?

sudo update-alternatives --config java 

Я установил Java с

sudo apt-get install openjdk-7-jre-headless

а затем найти место

ls -al /etc/alternatives/java

В качестве расширения данадамов ответ:

Прежде всего, установите вторую Java JRE в качестве третьей опции java с приоритетом «3»:

sudo alternatives --install /usr/lib/jvm/jre jre /opt/IBM/java/jre/bin/java 3

Затем вы можете перечислить их:

update-alternatives --list java

Вы можете установить альтернативу вручную, используя это:

sudo alternatives --config java /opt/IBM/java/jre/bin/java

Затем ваш скрипт может установить его на лету, например:

sudo alternatives --set java /opt/IBM/java/jre/bin/java
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Это лучше иллюстрирует, что делает команда sed. Хотя вам все равно нужно установить ссылки для javaw и javac и т.д., каждая из которых выполняется отдельно.

Некоторое время назад я создал на форуме Ubuntu руководство по установке последней версии JRE / JDK с веб-сайта Java. В нем также рассказывается о том, как включить его в масштабе всей системы, добавив местоположение JRE / JDK в переменную PATH. Если хотите, вы также можете добавить JAVA_HOME в сценарий, упомянутый в конце темы.

Проверьте это: http://ubuntuforums.org/showthread.php?t=1437100

Если java настроен с update-alternatives или был добавлен в вашу переменную PATH вручную, тогда не было жестко запрограммировано "/usr/bin/java" нужно. Я использую это решение в своем .bashrc:

export JAVA_HOME=$(readlink -m $(which java)/../..)