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


Ответы:


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/

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$//')"


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.