Домашний каталог JAVA в Linux

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

10 ответов


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

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


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

sudo find /usr/ -name *jdk

результаты

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

FYI, если вы находитесь на Mac, в настоящее время JAVA_HOME находится по адресу

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


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

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

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


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

переменная echo $

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

Эхо $переменной JAVA_HOME

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

экспорт JAVA_HOME=$(readlink-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)

на терминале, типа:

Эхо "$ JAVA_HOME"

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


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

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

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

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

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

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