Jak zmienić wartość JAVA_HOME
w Ubuntu, aby wskazywała na Java Oracle?
Czy powinien wskazywać na java-6-sun
czy java-6-sun-1.6.0.24
?
Jak zmienić wartość JAVA_HOME
w Ubuntu, aby wskazywała na Java Oracle?
Czy powinien wskazywać na java-6-sun
czy java-6-sun-1.6.0.24
?
Odpowiedzi:
Ustawiłem linię:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
w moim ~/.bashrc
pliku.
/usr/lib/jvm/java7-oracle
powinno być wskazującym dowiązaniem symbolicznym /usr/lib/jvm/java-7-oracle-[version number here]
.
Powodem, dla którego jest to dowiązanie symboliczne, jest to, że w przypadku nowej wersji maszyny JVM nie musisz aktualizować .bashrc
pliku, powinien on automatycznie wskazywać nową wersję.
Jeśli chcesz ustawić JAVA_HOME
zmienne środowiskowe globalnie i na poziomie systemu, oznacza to, że ich użycie powinno być ustawione w /etc/environment
pliku.
oracle-java7-set-default
robi pakiet.
Jeśli chcesz to zmienić globalnie i na poziomie systemu;
W
/etc/environment
dodaj tę linię:
JAVA_HOME=/usr/lib/jvm/java-7-oracle
$JAVA_HOME
nie rozwiązuje się, gdy jest używane w ten sposób PATH=$JAVA_HOME/bin
, próbowałem zrestartować, bez efektu. Czy muszę export
albo set
JAVA_HOME
też w tym pliku lub moim profilu?
aby ustawić Oracle Java SE Development Kit jako domyślną systemową Javę, po prostu pobierz najnowszą wersję Java SE Development Kit stąd, a następnie utwórz katalog w dowolnym miejscu w systemie plików, na przykład /usr/java
teraz wypakuj pliki, które właśnie pobrałeś w tym katalogu:
$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java
teraz ustawić JAVA_HOME
zmienną środowiskową:
$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000
upewnij się, że java Oracle jest ustawiona jako domyślna java przez:
$ update-alternatives --config java
dostajesz coś takiego:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/java/jdk1.8.0_05/bin/java 20000 auto mode
1 /opt/java/jdk1.8.0_05/bin/java 20000 manual mode
2 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
Press enter to keep the current choice[*], or type selection number:
zwróć uwagę na gwiazdkę przed cyframi po lewej stronie, a jeśli poprawna nie jest ustawiona, wybierz właściwą, wpisując jej numer i naciskając klawisz Enter. teraz przetestuj swoją Javę:
$ java -version
jeśli otrzymasz coś takiego, jak poniżej, możesz iść:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
pamiętaj również, że możesz potrzebować uprawnień roota lub być w grupie sudoers, aby to zrobić. Przetestowałem to rozwiązanie zarówno na Ubuntu 12.04, jak i Debianie wheezy i działa na obu.
Jeśli chcesz, aby ta zmienna środowiskowa była dostępna dla wszystkich użytkowników i przy starcie systemu, możesz dodać następujące elementy do /etc/profile.d/java.sh (utwórz ją, jeśli to konieczne):
export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
Następnie w trybie terminala:
sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
Moje drugie pytanie brzmi - czy powinno wskazywać na java-6-sun czy java-6-sun-1.6.0.24?
Powinien zawsze wskazywać na java-7-oracle
odnośniki symboliczne do ostatnio zainstalowanego (zakładając, że zainstalowałeś Javę z repozytoriów Ubuntu, a teraz z pliku do pobrania dostępnego na oracle.com).
java 6
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64
lub java 7
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
Jeśli zajmujesz się programowaniem, musisz wskazać JDK (Java Development Kit). W przeciwnym razie możesz wskazać środowisko JRE (Java Runtime Environment).
JDK zawiera wszystko, co ma JRE, a także więcej. Jeśli wykonujesz tylko programy w języku Java, możesz wskazać środowisko JRE lub JDK.
Należy ustawić JAVA_HOME
na podstawie aktualnie używanej Javy.
readlink
wypisze wartość dowiązania symbolicznego dla aktualnej Javy i sed
dostosuje ją do katalogu JRE:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
Jeśli chcesz ustawić JAVA_HOME na JDK, powinieneś przejść w górę o jeden folder więcej:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
Jeśli chcesz używać określonej wersji Java, gdy zainstalowanych jest wiele zestawów JDK, samo ustawienie JAVA_HOME może nie działać.
Musisz użyć, sudo update-alternatives --config java
aby ustawić domyślną Javę.
Zobacz to ; biegać
sudo update-java-alternatives --list
aby wyświetlić listę wszystkich instalacji Java na komputerze według nazwy i katalogu, a następnie uruchom
sudo update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]
aby wybrać, którego JRE / JDK użyć.
Jeśli chcesz używać różnych JDK / JRE dla każdego zadania Java, możesz uruchomić alternatywne aktualizacje, aby skonfigurować jeden plik wykonywalny Java na raz; możesz biec
sudo update-alternatives --config java[Tab]
aby zobaczyć polecenia Java, które można skonfigurować (java, javac, javah, javaws itp.). I wtedy
sudo update-alternatives --config [javac|java|javadoc|etc.]
skojarzy to zadanie / polecenie Java z określonym pakietem JDK / JRE.
Może być również konieczne ustawienie JAVA_HOME dla niektórych aplikacji: z tej odpowiedzi możesz użyć
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
dla środowiska JRE lub
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")
dla JDK.
java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment