Домашний каталог 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 и и смотреть его летать. Вы можете прокрутить и просмотреть его.