Як знайти свій поточний 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 -version", він дає версію Java "1.7.0_45" Java (TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot (TM) Server VM (build 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

@ 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 використовує доданий механізм JavaScript Nashorn 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.