Каталог JAVA_HOME в Linux

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

11 ответов

Решение

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

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

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

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

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

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

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

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

Я знаю, что уже поздно, но эта команда ищет в каталоге /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

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

echo $ VARIABLE

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

echo $ JAVA_HOME

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

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

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

Если $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)

В Терминале введите:

echo "$ JAVA_HOME"

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

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

  • Оболочки Korn и Bash: экспорт JAVA_HOME=jdk-install-dir
  • Оболочка Bourne:JAVA_HOME=jdk-install-dir; экспорт JAVA_HOME
  • Оболочка C:setenv JAVA_HOME jdk-install-dir

Вот улучшение, захватывая только каталог в stdout:

java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'

Вы можете проверить из командной строки, выполнив эту команду echo $JAVA_HOME. Если Java установлена, но путь не указан, вам необходимо указать путь к вашей установке Java. я предпочитаю использовать sudo update-alternatives --config javaв котором перечислены все установленные версии с пометкой текущей активной и предоставляется диалоговое окно для переключения:

Есть 3 программы, которые предоставляют «java».

  Команда выбора
--------------------------------------------------------------
   1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.14.0.9-2.fc35.x86_64/bin/java)
   2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-1.fc35.x86_64/bin/java)
*+ 3 /usr/java/jdk-17.0.2/bin/java

Введите, чтобы сохранить текущий выбор[+], или введите номер выбора:

из приведенного выше списка вы можете выбрать версию Java, которую вы хотите использовать по умолчанию. Чтобы установить JAVA_HOMEк варианту 3, например, вы можете сделать это таким образом export JAVA_HOME=/usr/java/jdk-17.0.2

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

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

Другие вопросы по тегам