Я устанавливаю Apache Solr на Linux Debian (Squeeze). Мне было поручено установить sun-java jdk 1st. Затем мне говорят, что я должен использовать эту команду, sudo update-alternatives --config java
чтобы убедиться, что конкретная java (sun-java) является средой выполнения по умолчанию. Но когда я запускаю эту команду, я получаю:
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:
Итак, какой номер я должен выбрать, чтобы использовать sun-java в качестве среды выполнения по умолчанию? Кроме того, что именно означают автоматический и ручной режимы? Если я выберу 3 выше и запущу команду update-alternate, я получу тот же результат, что и выше, опять же, похоже, ничего не изменилось, за исключением того, что теперь перед 3 стоит *, хотя он все еще читает ручной режим.
Есть ли способ подтвердить, что я сделал правильно?
sudo update-alternatives --config javac
Вот как я устанавливаю 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
источник
Есть много других двоичных файлов, которые необходимо связать, поэтому я думаю, что гораздо лучше попробовать что-то вроде
sudo update-alternatives --all
и выбрать правильные альтернативы для всего остального, кромеjava
иjavac
.источник
Я использую Ubuntu 18.04 LTS. В большинстве случаев, когда я меняю свою
java
версию, я хочу использовать ту жеjavac
версию.Я использую
update-alternatives
этот способ,java_home
вместо этого использую альтернативу:Установка
Установите каждую версию java
/opt/java/<version>
, например, в~$ 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/
Настроить альтернативы
~$ 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
Объявить
JAVA_HOME
(в данном случае я использую для этого глобальный сценарий инициализации)~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'
Выйдите из системы или перезапустите Ubuntu (это перезагрузит
/etc/profile.d/environment.sh
)Применение
Сменить версию Java
Выберите версию, которую хотите использовать
~$ 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:
Проверить версию
~$ 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
Наконечник
Добавьте в
~/.bash_aliases
файл следующую строку :alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"
Теперь используйте
change-java-version
команду для изменения версии javaисточник
Взгляните на https://wiki.debian.org/JavaPackage Внизу этой страницы описан другой метод с использованием команды из пакета java-common.
источник
Если вы хотите переключать jdk на регулярной основе (или обновлять его на новый, как только он будет выпущен), очень удобно использовать sdkman .
Вы также можете использовать дополнительные инструменты, такие как maven, с sdkman.
источник