Подтвердить что ты не робот

Каталог JAVA_HOME в Linux

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

Просто еще одно решение, это кроссплатформенная (использует 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"

Ответ 5

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

echo $VARIABLE

поэтому в вашем случае будет:

echo $JAVA_HOME

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

export JAVA_HOME = $(readlink -f/usr/bin/java | sed "s: bin/java::" )

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

Ответ 6

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

Ответ 7

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

echo "$ JAVA_HOME"

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

Ответ 8

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

  • Korn и bash shells: export JAVA_HOME = jdk-install-dir
  • Bourne shell: JAVA_HOME = jdk-install-dir; экспортировать JAVA_HOME
  • C shell: setenv JAVA_HOME jdk-install-dir

Ответ 9

Здесь улучшается, хватая только директорию в stdout:

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

Ответ 10

(dirname $(dirname $(readlink -e $(which java))))