Instaluję Apache Solr na Linux Debian (Squeeze). Zostałem poinstruowany, aby zainstalować 1. Sun-java jdk. Następnie powiedziano mi, że powinienem użyć polecenia, sudo update-alternatives --config java
aby upewnić się, że określona java (sun-java) jest domyślnym środowiskiem wykonawczym. Jednak po uruchomieniu tego polecenia otrzymuję:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode
1 /usr/bin/gij-4.4 1044 manual mode
2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
Press enter to keep the current choice[*], or type selection number:
Więc jaki numer powinienem wybrać, aby sun-java był domyślnym środowiskiem wykonawczym? Co dokładnie oznaczają tryby automatyczny i ręczny? Jeśli wybiorę 3 powyżej i uruchomię polecenie aktualizacji-alternatywy, otrzymam takie same dane wyjściowe jak powyżej, znowu wydaje się, że nic się nie zmieniło, z wyjątkiem tego, że * znajduje się teraz przed 3, chociaż nadal czyta tryb ręczny.
Czy istnieje sposób, aby potwierdzić, że to, co zrobiłem, jest prawidłowe?
sudo update-alternatives --config javac
W ten sposób instaluję jdk
#!/bin/bash cd /opt/ sudo mkdir java sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz sudo ln -s jdk1.8.0_192 current for file in /opt/java/current/bin/* do if [ -x $file ] then filename=`basename $file` sudo update-alternatives --install /usr/bin/$filename $filename $file 20000 sudo update-alternatives --set $filename $file #echo $file $filename fi done
źródło
Istnieje wiele innych plików binarnych, które należy połączyć, więc myślę, że znacznie lepiej jest spróbować czegoś takiego
sudo update-alternatives --all
i wybrać odpowiednie alternatywy dla wszystkiego innego opróczjava
ijavac
.źródło
Używam Ubuntu 18.04 LTS. W większości przypadków, gdy zmieniam
java
wersję, chcę również użyć tej samejjavac
wersji.Używam w
update-alternatives
ten sposób, używając plikujava_home
alternatywy:Instalacja
Zainstalować każdą wersję javy w
/opt/java/<version>
, na przykład~$ ll /opt/java/ total 24 drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./ drwxr-xr-x 9 root root 4096 feb. 7 13:40 ../ drwxr-xr-x 8 stephanecodes stephanecodes 4096 jan. 8 2019 jdk-11.0.2/ drwxr-xr-x 7 stephanecodes stephanecodes 4096 dec. 15 2018 jdk1.8.0_201/
Skonfiguruj alternatywy
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100 ~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200
Zadeklaruj
JAVA_HOME
(w tym przypadku używam do tego globalnego skryptu inicjującego)~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'
Wyloguj się lub uruchom ponownie Ubuntu (spowoduje to ponowne załadowanie
/etc/profile.d/environment.sh
)Stosowanie
Zmień wersję java
Wybierz wersję, której chcesz użyć
~$ sudo update-alternatives --config java_home There are 2 choices for the alternative java_home (providing /opt/java/current). Selection Path Priority Status ------------------------------------------------------------ 0 /opt/java/jdk-11.0.2 200 auto mode 1 /opt/java/jdk-11.0.2 200 manual mode * 2 /opt/java/jdk1.8.0_201 100 manual mode Press <enter> to keep the current choice[*], or type selection number:
Sprawdź wersję
~$ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) ~$ javac -version javac 11.0.2
Wskazówka
Dodaj następujący wiersz do
~/.bash_aliases
pliku:alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"
Teraz użyj
change-java-version
polecenia, aby zmienić wersję Javaźródło
Spójrz na https://wiki.debian.org/JavaPackage Na dole tej strony opisana jest inna metoda za pomocą polecenia z pakietu java-common
źródło
Jeśli chcesz regularnie zmieniać jdk (lub aktualizować na nowy po jego wydaniu), bardzo wygodne jest użycie sdkman .
Możesz także korzystać z dodatkowych narzędzi, takich jak maven z sdkman.
źródło