Каталог JAVA_HOME в Linux - PullRequest
57 голосов
/ 13 июля 2009

Есть ли какая-нибудь команда linux, которую я мог бы использовать, чтобы узнать каталог JAVA_HOME? Я попытался распечатать переменные окружения ("env"), но не могу найти каталог.

Ответы [ 10 ]

72 голосов
/ 18 декабря 2013

В Linux вы можете запустить $(dirname $(dirname $(readlink -f $(which javac))))

На Mac вы можете запустить $(dirname $(readlink $(which javac)))/java_home

Я не уверен насчет окон, но я думаю, where javac приблизит вас к вам

53 голосов
/ 13 июля 2009

echo $JAVA_HOME напечатает значение, если оно установлено. Однако, если вы не установили его вручную в сценариях запуска, он, вероятно, не установлен.

Если вы попробуете which java и ничего не найдете, Java может быть не установлена ​​на вашем компьютере или, по крайней мере, не на вашем пути. В зависимости от того, какой у вас дистрибутив Linux и есть ли у вас root-доступ, вы можете перейти на http://www.java.com, чтобы загрузить нужную версию. Затем вы можете установить JAVA_HOME, чтобы указать на этот каталог. Помните, что это просто соглашение, и его не следует использовать для определения, установлена ​​ли Java или нет.

34 голосов
/ 31 июля 2012

Я знаю, что уже поздно, но эта команда ищет каталог / usr /, чтобы найти для вас java

sudo find /usr/ -name *jdk

Результаты до

/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk

К вашему сведению, если вы работаете на Mac, JAVA_HOME в настоящее время находится по адресу

/System/Library/Frameworks/JavaVM.framework/Home

27 голосов
/ 10 марта 2017

Просто еще одно решение, это кроссплатформенное (использует java), и оно указывает на местоположение jre

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'

Выводит все текущие настройки java и находит тот, который называется java.home.

Для окон вы можете использовать findstr вместо grep.

java -XshowSettings:properties -version 2>&1 | findstr "java.home"
9 голосов
/ 11 ноября 2014

Чтобы показать значение переменной окружения, которую вы используете:

echo $ VARIABLE

так в вашем случае будет:

echo $ JAVA_HOME

Если он не установлен, вы можете добавить в файл .bashrc:

export JAVA_HOME = $ (ссылка для чтения -f / usr / bin / java | sed "s: bin / java ::")

и он будет динамически меняться при обновлении ваших пакетов.

8 голосов
/ 10 апреля 2015

Если в вашей среде определено $JAVA_HOME ...

$ echo $JAVA_HOME
$ # I am not lucky...

Вы можете догадаться по загруженным классам.

$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]

Этот метод гарантирует, что вы найдете правильный jdk / jre, используемый в случае нескольких установок.

Или используя strace:

$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
2 голосов
/ 13 июля 2009

Вы установили свой JAVA_HOME

  • Оболочки Korn и Bash: экспорт JAVA_HOME = jdk-install-dir
  • Оболочка Bourne: JAVA_HOME = jdk-install-dir; экспорт JAVA_HOME
  • Оболочка C: setenv JAVA_HOME jdk-install-dir
2 голосов
/ 13 июля 2009

На терминале введите:

echo "$ JAVA_HOME"

Если вы ничего не получаете, тогда ваша переменная окружения JAVA_HOME не установлена Вы можете попробовать использовать "locate java", чтобы узнать, где находится ваша установка Java.

1 голос
/ 23 апреля 2017

Вот улучшение, когда каталог просто выводится на стандартный вывод:

java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'
0 голосов
/ 10 февраля 2015

http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment

Если вы действительно хотите получить некоторую информацию о вашем BASH, поместите этот скрипт в ваш .bashrc и посмотрите, как он пролетает. Вы можете прокрутить и просмотреть его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...