Вопрос: Как определить JAVA_HOME на Debian / Ubuntu?


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

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


87
2018-05-20 15:09


Источник




Ответы:


Для JRE что-то вроде этого должно сделать трюк:

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

131
2018-05-20 17:55



Мне нужен был дом JDK, а не JRE, но я получил это, используя: JAVA_HOME = $ (readlink -f / usr / bin / javac | sed »s: bin / javac ::») Спасибо! - Witek
когда я попробовал команду echo $(readlink -f /usr/bin/java | sed "s:bin/java::"), выход был /usr/lib/jvm/java-7-oracle/jre/ и не /usr/lib/jvm/java-7-oracle/ - Sumit Ramteke
Код, приведенный в rsaddey работает правильно - Sumit Ramteke


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

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

41
2018-06-02 08:44





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

В .bashrc было удобно для меня.


12
2018-04-25 09:34





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

sudo update-alternatives --config java 

9
2018-05-20 15:14



Предположим ли вы установить JAVA_HOME? Я обнаружил, что update-java-альтернативы - лучший способ обновить Java, поскольку альтернативы обновлений не обновляют все связанные с Java альтернативы. Видеть askubuntu.com/questions/141791 - James McMahon
Правда, но я столкнулся с экземплярами Linux, у которых были альтернативы для обновления, но не были установлены альтернативы update-java. - djangofan


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

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

а затем найти местоположение

ls -al /etc/alternatives/java

3
2018-03-05 03:40





Как продолжение ответа данадам:

Прежде всего, установите вторую 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 и т. Д., А также, каждый из них выполняется отдельно.


2
2018-03-02 16:40





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

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


1
2018-05-20 18:47