Odpowiedzi:
Nie jestem do końca pewien, ale jeśli zainstalujesz normalne RPMS, wartość JAVA_HOME można również ustawić na:
/usr/java/default/
EDYCJA: Właśnie sprawdziłem w moim systemie domowym. Utworzyłem ten plik:
/etc/profile.d/java.sh
To zawiera:
export JAVA_HOME=/usr/java/default/
i używam oficjalnej wersji Sun: jdk-1.6.0_12-fcs
EDYCJA: Oto jak skonfigurować Javę na moim komputerze :
Pobierz i zainstaluj Java JDK z Oracle
Upewnij się, że ta Java jest używana zamiast wersji OpenJDK za pomocą następujących dwóch poleceń:
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
Upewnij się, że wszyscy użytkownicy mają zmienną środowiskową JAVA_HOME ustawioną na poprawną wartość:
echo "export JAVA_HOME=/usr/java/default/" > /etc/profile.d/java_home.sh
/usr/java/default
w moim pudełku CentOS 6 z zainstalowanymi OpenJDK 1.6 i 1.7.
Chcesz ustawić JAVA_HOME jako lokalizację główną JDK lub JRE, na przykład:
export JAVA_HOME=/usr/java/jdk1.3
Jeśli JDK (zestaw programistyczny) jest zainstalowany, prawdopodobnie chcesz, aby wskazywał na to, w przeciwnym razie użyj ścieżki JRE (Java Runtime Environment). Następnie możesz ustawić zmienną środowiskową $ PATH, aby zawierała również katalog bin:
export PATH=$PATH:/usr/java/jdk1.3/bin
Jeśli używasz tomcat, może być konieczne ustawienie CATALINA_HOME dla użytkownika tomcat.
export CATALINA_HOME=/path/to/tomcat
Aby ustawić to dla systemu, chcesz edytować swój plik / etc / profile lub dodać plik .sh w folderze /etc/profile.d. Dla konkretnego użytkownika możesz umieścić go w plikach ~ / .profile użytkownika lub ~ / .bash_profile.
Poniżej zawsze działa dla mnie idealnie:
[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
Oznacza to, że mogę ustawić JAVA_HOME jako /usr/java/jdk1.6.0_31
Rozważyłem problem polegający na zmianie wersji Java używanej z:
alternatives --config java
W takim razie każde zakodowane JAVA_HOME
na stałe zmieni się (przynajmniej tak będzie w Centos 6.6, na które obecnie patrzę). To znaczy nie ma /usr/java
.
Nie wydaje się to najlepszym sposobem (otwartym na porażkę), ale w ciągu 10 minut, które spędziłem na tym, wydaje się najlepsze.
W /etc/bashrc
zmodyfikowałem ustawienie, JAVA_HOME
aby było:
export JAVA_HOME=$(alternatives --display java | grep current | sed 's/link currently points to //' | sed 's|/bin/java||')
Musisz zrobić coś podobnego na MacOSX, ale bez tego wszystkiego grep
i sed
przeanalizować wynik. Z pewnością alternatives
oferuje podobnie łatwiejsze rozwiązanie.
W każdym razie mam nadzieję, że pomogłem.
Aktualizacja
Nie, to by było JRE_HOME
. JDK / SDK nie okazuje się tak oczywiste (będę szukał dalej).
alternatives
Wydaje się być tylko o JRE domyślnie. Opieram się na odpowiedzi @Niels lub po prostu instaluję Javę yum
i ustawiam JAVA_HOME na ten (sztuczka polega na tym, że znalazłem, gdzie to zostało zainstalowane!).
yum install java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
Zauważyłem, że java_1.8.0
jest dowiązaniem symbolicznym /etc/alternatives/java_sdk_1.8.0
i dlatego ustawiłem $ JAVA_HOME na /usr/lib/jvm/java_1.8.0
. W /etc/bashrc
.
To dziwne, cały sens posiadania zmiennej środowiskowej JAVE_HOME polega na tym, że nie trzeba określać ścieżki do każdego programu, można ją uzyskać, szukając tej zmiennej.
Tak czy inaczej, poprawnym sposobem znalezienia zmiennej środowiskowej dla JAVA_HOME jest użycie echa:
[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09
Uruchomienie tego polecenia wyświetli ścieżkę bez względu na wersję, z której korzystasz, z wiersza polecenia.
Odp .: Centos7, patrz plik /etc/java/java.conf.
w nim JAVA_HOME ma znajdować się w następującym katalogu: / usr / lib / jvm / java
sprawdziłem, to jest poprawna wersja jdk załadowałem przez yum, a więc ...
moja env nie ma domyślnie ustawionej JAVA_HOME, dlatego ustawiłem ją w .bash_profile
Odkryłem, że menedżer pakietów może umieszczać w różnych lokalizacjach, więc przy użyciu których (musisz jawnie zainstalować to, jeśli używasz kontenera), poniższe są nieco mniej kruche
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export JAVA_HOME=$javaHome
lub dla JRE
javaExec=$(which java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome