Есть ли какая-либо команда linux, которую я мог бы использовать, чтобы узнать каталог JAVA_HOME
? Я попытался распечатать переменные среды ( "env" ), но я не могу найти каталог.
Каталог JAVA_HOME в Linux
Ответ 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))))
Ответ 11
http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment
Если вы действительно хотите получить некоторую информацию о своем BASH, поместите этот script в свой .bashrc и наблюдайте, как он летает. Вы можете прокручивать и просматривать его.