Відповіді:
Я не зовсім впевнений, але якщо встановити звичайний RPMS, значення JAVA_HOME також може бути встановлено таким:
/usr/java/default/
EDIT: Я щойно перевірив домашню систему. Я створив цей файл:
/etc/profile.d/java.sh
Що містить:
export JAVA_HOME=/usr/java/default/
і я використовую офіційну версію від Sun: jdk-1.6.0_12-fcs
EDIT: Ось, як я налаштував Java на своїй машині :
Завантажте та встановіть Java JDK від Oracle
Переконайтеся, що ця Java використовується замість версії OpenJDK за допомогою наступних двох команд:
alternatives --install /usr/bin/java java /usr/java/default/bin/java 999999 \
--slave /usr/bin/keytool keytool /usr/java/default/bin/keytool \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/default/bin/rmiregistry
alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 999999 \
--slave /usr/bin/jar jar /usr/java/default/bin/jar \
--slave /usr/bin/rmic rmic /usr/java/default/bin/rmic
Переконайтесь, що всі користувачі встановили правильну величину змінної середовища JAVA_HOME:
echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
/usr/java/default
моєму вікні CentOS 6 немає встановлених OpenJDK 1.6 та 1.7.
Ви хочете встановити JAVA_HOME як кореневе місце JDK або JRE, наприклад:
export JAVA_HOME=/usr/java/jdk1.3
Якщо встановлений JDK (комплект розвитку), ypu, ймовірно, хоче, щоб він вказував на це, інакше використовуйте шлях JRE (середовище виконання Java). Потім ви можете встановити змінну середовища $ PATH, щоб вона включала також каталог бін:
export PATH=$PATH:/usr/java/jdk1.3/bin
Якщо ви використовуєте tomcat, можливо, вам також знадобиться встановити CATALINA_HOME для користувача tomcat.
export CATALINA_HOME=/path/to/tomcat
Щоб встановити це для системи, потрібно відредагувати / etc / profile або додати .sh файл у папку /etc/profile.d. Для конкретного користувача ви можете розмістити його у файлах ~ / .profile або ~ / .bash_profile.
Нижче завжди працює для мене ідеально:
[user@base ~]$ locate bin/java
/usr/bin/java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/java/jdk1.6.0_31/bin/java
/usr/java/jdk1.6.0_31/bin/javac
/usr/java/jdk1.6.0_31/bin/javadoc
/usr/java/jdk1.6.0_31/bin/javah
/usr/java/jdk1.6.0_31/bin/javap
/usr/java/jdk1.6.0_31/bin/javaws
/usr/java/jdk1.6.0_31/jre/bin/java
/usr/java/jdk1.6.0_31/jre/bin/java_vm
/usr/java/jdk1.6.0_31/jre/bin/javaws
Це означає, що я можу встановити JAVA_HOME як /usr/java/jdk1.6.0_31
Я розглядав проблему, якщо змінюється версія Java, яка використовується з:
alternatives --config java
Тоді будь-яке жорстке кодування JAVA_HOME
зміниться (принаймні це буде на Centos 6.6, на який я зараз дивлюся). Тобто, немає/usr/java
.
Це здається не найкращим способом (відкритим до відмови), але за 10 хвилин, які я витратив на це, це здається найкращим.
В /etc/bashrc
я змінив настройки для JAVA_HOME
бути:
export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')
Вам потрібно зробити щось подібне на MacOSX, але без усього grep
і sed
проаналізувати результат. Безумовно, alternatives
пропонує аналогічно простіше рішення.
У будь-якому випадку я сподіваюся, що я допоміг.
Оновлення
Ні, не було б JRE_HOME
. JDK / SDK не виявляється очевидним (я продовжую шукати).
alternatives
, Здається, тільки про JRE за замовчуванням. Я відкладаю на @Niels відповідь або просто встановлюю Java з yum
і встановлюю JAVA_HOME на це (фокус у тому, де я знайшов, де це було встановлено!).
yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
Я помітив java_1.8.0
, що це симпосилання на /etc/alternatives/java_sdk_1.8.0
і так встановив свій $ JAVA_HOME /usr/lib/jvm/java_1.8.0
. В /etc/bashrc
.
Це дивно, вся сенс наявності змінної середовища JAVE_HOME полягає в тому, що вам не потрібно вказувати шлях до кожної програми, вона може отримати цей шлях, шукаючи цю змінну.
У будь-якому випадку правильним способом знайти змінну середовища для JAVA_HOME є використання echo:
[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09
Запуск цієї команди відобразить шлях, незалежно від версії, яку ви виконуєте, з командного рядка.
re: Centos7, зверніться до файлу /etc/java/java.conf.
в ньому JAVA_HOME вказується на розташування в наступному режимі: / usr / lib / jvm / java
Я перевірив, це правильна версія jdk, яку я завантажував через yum, і так ...
у моїй середовищі за замовчуванням не встановлено JAVA_HOME, тому я встановив його у .bash_profile
Я виявив, що менеджер пакунків може розміщуватись у різних місцях, тож використовуючи яке (вам потрібно буде явно встановити це, якщо використовуєте контейнер), наступне - трохи менш крихке
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome
або для JRE
javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome