Как найти мой текущий JAVA_HOME в Ubuntu?

55

Как найти мой текущий JAVA_HOME в Ubuntu? Я должен установить путь java_home при установке maven.

Самита Чатуранга
источник

Ответы:

84

Введите в терминале,

echo $JAVA_HOME

Показать путь к переменной JAVA_HOME.

ЕСЛИ НИЧЕГО НЕ ЯВЛЯЕТСЯ, ТОГДА УСТАНОВИТЕ ЭТО

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Это зависит от вашего типа и версии JDK

Для отображения следуйте первой команде.

Следуйте этому посту для использования различных JDK или переключения между JDK

углублять
источник
Это дает "/ usr / lib / jvm / java-6-sun". Но я установил Java 7. Когда я проверяю его с помощью «Java-версии», он дает Java-версию «1.7.0_45» Java (TM) SE Runtime Environment (сборка 1.7.0_45-b18) Java HotSpot (TM) Server VM (сборка 24.45-b08, смешанный режим)
Самита Чатуранга
2
затем выполните вторую команду для установки переменной JAVA_HOME. ПРИМЕЧАНИЕ:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
Углубиться
вы должны установить его в / etc / environment
keiki
@ Jax-L Но теперь, когда я даю эхо JAVA_HOME, он просто отображается как «JAVA_HOME». Указанный мной путь не отображается ... ???
Самита Чатуранга
2
экспорт работает только до перезагрузки. Или вы добавляете экспорт в скрипт входа .bashrc. Но правильный способ установить такие переменные среды - в / etc / environment
keiki
34

Если у вас есть JDK 1.6 ( что соответствует Java 6) или более новой версии , установленной, вы должны иметь программу с именем jrunscriptв вашем PATH. Вы можете использовать это, чтобы найти соответствующий JAVA_HOME. Пример:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

Вы можете установить переменную окружения следующим образом:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Обратите внимание, что JRE не включает в себя jrunscript, так что это будет работать, только если вы установите JDK, а не только JRE.

Роб Майофф
источник
Это было много, чтобы понять, что мне нужно пойти на один каталог глубже, но спасибо.
cnizzardini
15

Еще одним переносимым вариантом является извлечение абсолютного пути JDK из javac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

Абсолютный javacпуть передается dirnameдважды для удаления /bin/javacс конца. Полное извлечение каталога происходит следующим образом:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/
rzymek
источник
1
можно использовать type -p javac|xargs readlink -f|xargs dirname|xargs dirname(без части экспорта), чтобы узнать каталог, не устанавливая его.
Мина Майкл
Именно то, что я искал! Блестящий ответ!
Сильвиу Бурча
7

Чтобы учесть механизм обновления альтернатив:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

Вы можете установить переменную окружения следующим образом:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"
Франциско
источник
Это не совсем дает JAVA_HOME, так как у него все еще есть трейлинг /jre. Вы можете попробоватьexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
Джеймс Брюси
7

Просто запустите команду

 sudo update-alternatives --config java

Это даст что-то вроде

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

Исходя из этого у вас есть / usr / lib / jvm / java-8-oracle / как java home. Теперь вы можете экспортировать его в переменную JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

Теперь эхо $ JAVA_HOME показать это

Вимал Кришна
источник
1

Я использую это в Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"
ggrandes
источник
0

Для Java 9 и более поздних версий:

Этот ответ https://askubuntu.com/a/657468/963 использует вложенный механизм Nashorn JavaScript Nashorn для распечатки java.homeсистемного свойства. Nashorn устарела, поэтому альтернативой является использование jshellпредставленного в Java 9.

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

который в моей системе Ubuntu 18.10 распечатывает:

/usr/lib/jvm/java-11-openjdk-amd64
Турбьерн Равн Андерсен
источник