Как мне сделать java по умолчанию установленным вручную JRE/JDK?

У меня на компьютере установлена Ubuntu 12.04 amd64, в предыдущих версиях Ubuntu это было смертельно просто, теперь есть эта команда update-java-alternatives с действительно плохой страницей.

Я просто распаковал свой JDK на смонтированный раздел, например /media/mydisk/jdk, как я могу принудительно использовать этот JDK вместо того, который поставляется в репозитории Ubuntu?

Какова логика, стоящая за этим update-java-alternatives ?

Вы можете сделать это с помощью sudo update-alternatives :

# Adding a new alternative for "java".sudo update-alternatives --install /usr/bin/java java /media/mydisk/jdk/bin/java 1# Setting the new alternative as default for "java".sudo update-alternatives --config java

Вы должны сделать это и для других компонентов jdk. Эти компоненты являются appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, javaws, jconsole, jdb, jexec, jhat, jinfo, jmap, jps, jrunscript, jsadebugd, jstack, jstat, jstatd, keytool, mozilla-javaplugin.so, native2ascii, orbd, pack200, policytool, rmic, rmid, rmiregistry, schemagen, serialver, servertool, tnameserv, unpack200, wsgen, wsimport, xjc.

Для получения дополнительной информации вы можете ознакомиться со справочными страницами для update-alternatives : man update-alternatives.

Команда update-java-alternatives устанавливает альтернативы для компонентов java и, похоже, использует update-alternatives за это.

РЕДАКТИРОВАТЬ: Приведенный выше ответ нацелен на Java 6.

  • Для Java 7 вам необходимо добавить jcmd в список Java 6.
  • Для Java 8 вам необходимо добавить jcmd, jjs и jdeps в список Java 6.
  • Для Java 9 вам необходимо добавить jcmd, jjs, jdeps и jshell в список Java 6.

Примечание: update-java-alternatives не будет работать при ручной установке. В любом случае, не похоже, что у него есть какие-то особые способности, которые update-alternatives у него ничего нет, кроме удобства.

В качестве графической альтернативы методу командной строки @AnwarShah рассмотрите возможность использования Альтернативы Gnome (sudo apt-get install galternatives):

  • Начать Альтернативы, выберите каждый Ява вариант, измените его на ручной и Добавь ваша альтернатива (примером здесь является IBM JRE, установленная в моем домашнем каталоге):

    enter image description here

    enter image description here

    enter image description here

Я на самом деле использую эти команды для установки jdk1.6.0_25. (Проверьте ссылку ниже для получения обновленного скрипта полного обновления-альтернативы)

sudo update-alternatives --install /usr/bin/java java /media/mydisk/jdk/bin/java 100sudo update-alternatives --install /usr/bin/javac javac /media/mydisk/jdk/bin/javac 100sudo update-alternatives --install /usr/bin/java_vm java_vm /media/mydisk/jdk/bin/java_vm 100sudo update-alternatives --install /usr/bin/jcontrol jcontrol /media/mydisk/jdk/bin/jcontrol 100sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100 --slave /usr/share/binfmts/jar jexec-binfmt media/mydisk/jdk/jre/lib/javaws

А затем вы можете использовать эти команды для установки по умолчанию. Скорее всего, они не нужны.

sudo update-alternatives --config javasudo update-alternatives --config javacsudo update-alternatives --config java_vmsudo update-alternatives --config jcontrolsudo update-alternatives --config jexec

Вы можете получить дополнительную помощь, используя команду man update-alternatives или вы можете увидеть руководство в вашем браузере здесь

Цель этого update-java-alternatives как описано на странице руководства, это

update-java-alternatives обновляет все альтернативы, принадлежащие одной среде выполнения или набору разработки для языка Java. Пакет действительно предоставляет эту информацию о своих альтернативах в /usr/lib/jvm/.<jname>.jinfo.

Все инструменты jdk являются

appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc

Надеюсь, это вам поможет.


Обновление

Я использую этот скрипт для извлечения загруженного jdk и использования update-alternatives чтобы полностью установить его. Измените имя файла jdk и JAVA_DIR в соответствии с вашими потребностями. JAVA_DIR это путь к вашему извлеченный папка jdk.

#!/bin/shJAVA_DIR=/usr/lib/jvm/jdk1.8.0_65# extract a jdk file named `jdk-8u65-linux-x64.tar.gz` from current directory to `/usr/lib/jvm`sudo tar xvf jdk-8u65-linux-x64.tar.gz -C /usr/lib/jvm/# update alternative linkssudo update-alternatives --quiet --install /usr/lib/xulrunner-addons/plugins/libjavaplugin.so xulrunner-1.9-javaplugin.so $JAVA_DIR/jre/lib/amd64/libnpjp2.so 100sudo update-alternatives --quiet --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so $JAVA_DIR/jre/lib/amd64/libnpjp2.so 100sudo update-alternatives --quiet --install /usr/bin/appletviewer appletviewer $JAVA_DIR/bin/appletviewer 100 --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 $JAVA_DIR/man/man1/appletviewer.1sudo update-alternatives --quiet --install /usr/bin/apt apt $JAVA_DIR/bin/apt 100 --slave /usr/share/man/man1/apt.1 apt.1 $JAVA_DIR/man/man1/apt.1sudo update-alternatives --quiet --install /usr/bin/extcheck extcheck $JAVA_DIR/bin/extcheck 100 --slave /usr/share/man/man1/extcheck.1 extcheck.1 $JAVA_DIR/man/man1/extcheck.1sudo update-alternatives --quiet --install /usr/bin/idlj idlj $JAVA_DIR/bin/idlj 100 --slave /usr/share/man/man1/idlj.1 idlj.1 $JAVA_DIR/man/man1/idlj.1sudo update-alternatives --quiet --install /usr/bin/jar jar $JAVA_DIR/bin/jar 100 --slave /usr/share/man/man1/jar.1 jar.1 $JAVA_DIR/man/man1/jar.1sudo update-alternatives --quiet --install /usr/bin/jarsigner jarsigner $JAVA_DIR/bin/jarsigner 100 --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 $JAVA_DIR/man/man1/jarsigner.1sudo update-alternatives --quiet --install /usr/bin/javac javac $JAVA_DIR/bin/javac 100 --slave /usr/share/man/man1/javac.1 javac.1 $JAVA_DIR/man/man1/javac.1sudo update-alternatives --quiet --install /usr/bin/javadoc javadoc $JAVA_DIR/bin/javadoc 100 --slave /usr/share/man/man1/javadoc.1 javadoc.1 $JAVA_DIR/man/man1/javadoc.1sudo update-alternatives --quiet --install /usr/bin/javah javah $JAVA_DIR/bin/javah 100 --slave /usr/share/man/man1/javah.1 javah.1 $JAVA_DIR/man/man1/javah.1sudo update-alternatives --quiet --install /usr/bin/javap javap $JAVA_DIR/bin/javap 100 --slave /usr/share/man/man1/javap.1 javap.1 $JAVA_DIR/man/man1/javap.1sudo update-alternatives --quiet --install /usr/bin/jconsole jconsole $JAVA_DIR/bin/jconsole 100 --slave /usr/share/man/man1/jconsole.1 jconsole.1 $JAVA_DIR/man/man1/jconsole.1sudo update-alternatives --quiet --install /usr/bin/jdb jdb $JAVA_DIR/bin/jdb 100 --slave /usr/share/man/man1/jdb.1 jdb.1 $JAVA_DIR/man/man1/jdb.1sudo update-alternatives --quiet --install /usr/bin/jhat jhat $JAVA_DIR/bin/jhat 100 --slave /usr/share/man/man1/jhat.1 jhat.1 $JAVA_DIR/man/man1/jhat.1sudo update-alternatives --quiet --install /usr/bin/jinfo jinfo $JAVA_DIR/bin/jinfo 100 --slave /usr/share/man/man1/jinfo.1 jinfo.1 $JAVA_DIR/man/man1/jinfo.1sudo update-alternatives --quiet --install /usr/bin/jmap jmap $JAVA_DIR/bin/jmap 100 --slave /usr/share/man/man1/jmap.1 jmap.1 $JAVA_DIR/man/man1/jmap.1sudo update-alternatives --quiet --install /usr/bin/jps jps $JAVA_DIR/bin/jps 100 --slave /usr/share/man/man1/jps.1 jps.1 $JAVA_DIR/man/man1/jps.1sudo update-alternatives --quiet --install /usr/bin/jrunscript jrunscript $JAVA_DIR/bin/jrunscript 100 --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 $JAVA_DIR/man/man1/jrunscript.1sudo update-alternatives --quiet --install /usr/bin/jsadebugd jsadebugd $JAVA_DIR/bin/jsadebugd 100 --slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 $JAVA_DIR/man/man1/jsadebugd.1sudo update-alternatives --quiet --install /usr/bin/jstack jstack $JAVA_DIR/bin/jstack 100 --slave /usr/share/man/man1/jstack.1 jstack.1 $JAVA_DIR/man/man1/jstack.1sudo update-alternatives --quiet --install /usr/bin/jstat jstat $JAVA_DIR/bin/jstat 100 --slave /usr/share/man/man1/jstat.1 jstat.1 $JAVA_DIR/man/man1/jstat.1sudo update-alternatives --quiet --install /usr/bin/jstatd jstatd $JAVA_DIR/bin/jstatd 100 --slave /usr/share/man/man1/jstatd.1 jstatd.1 $JAVA_DIR/man/man1/jstatd.1sudo update-alternatives --quiet --install /usr/bin/native2ascii native2ascii $JAVA_DIR/bin/native2ascii 100 --slave /usr/share/man/man1/native2ascii.1 native2ascii.1 $JAVA_DIR/man/man1/native2ascii.1sudo update-alternatives --quiet --install /usr/bin/rmic rmic $JAVA_DIR/bin/rmic 100 --slave /usr/share/man/man1/rmic.1 rmic.1 $JAVA_DIR/man/man1/rmic.1sudo update-alternatives --quiet --install /usr/bin/schemagen schemagen $JAVA_DIR/bin/schemagen 100 --slave /usr/share/man/man1/schemagen.1 schemagen.1 $JAVA_DIR/man/man1/schemagen.1sudo update-alternatives --quiet --install /usr/bin/serialver serialver $JAVA_DIR/bin/serialver 100 --slave /usr/share/man/man1/serialver.1 serialver.1 $JAVA_DIR/man/man1/serialver.1sudo update-alternatives --quiet --install /usr/bin/wsgen wsgen $JAVA_DIR/bin/wsgen 100 --slave /usr/share/man/man1/wsgen.1 wsgen.1 $JAVA_DIR/man/man1/wsgen.1sudo update-alternatives --quiet --install /usr/bin/wsimport wsimport $JAVA_DIR/bin/wsimport 100 --slave /usr/share/man/man1/wsimport.1 wsimport.1 $JAVA_DIR/man/man1/wsimport.1sudo update-alternatives --quiet --install /usr/bin/xjc xjc $JAVA_DIR/bin/xjc 100 --slave /usr/share/man/man1/xjc.1 xjc.1 $JAVA_DIR/man/man1/xjc.1sudo update-alternatives --quiet --install /usr/bin/java-rmi.cgi java-rmi.cgi $JAVA_DIR/bin/java-rmi.cgi 100sudo update-alternatives --quiet --install /usr/bin/ControlPanel ControlPanel $JAVA_DIR/jre/bin/ControlPanel 100sudo update-alternatives --quiet --install /usr/bin/java java $JAVA_DIR/jre/bin/java 100sudo update-alternatives --quiet --install /usr/bin/java_vm java_vm $JAVA_DIR/jre/bin/java_vm 100sudo update-alternatives --quiet --install /usr/bin/javaws javaws $JAVA_DIR/jre/bin/javaws 100sudo update-alternatives --quiet --install /usr/bin/jcontrol jcontrol $JAVA_DIR/jre/bin/jcontrol 100sudo update-alternatives --quiet --install /usr/bin/keytool keytool $JAVA_DIR/jre/bin/keytool 100sudo update-alternatives --quiet --install /usr/bin/pack200 pack200 $JAVA_DIR/jre/bin/pack200 100sudo update-alternatives --quiet --install /usr/bin/policytool policytool $JAVA_DIR/jre/bin/policytool 100sudo update-alternatives --quiet --install /usr/bin/rmid rmid $JAVA_DIR/jre/bin/rmid 100sudo update-alternatives --quiet --install /usr/bin/rmiregistry rmiregistry $JAVA_DIR/jre/bin/rmiregistry 100sudo update-alternatives --quiet --install /usr/bin/unpack200 unpack200 $JAVA_DIR/jre/bin/unpack200 100sudo update-alternatives --quiet --install /usr/bin/orbd orbd $JAVA_DIR/jre/bin/orbd 100sudo update-alternatives --quiet --install /usr/bin/servertool servertool $JAVA_DIR/jre/bin/servertool 100sudo update-alternatives --quiet --install /usr/bin/tnameserv tnameserv $JAVA_DIR/jre/bin/tnameserv 100sudo update-alternatives --quiet --install /usr/bin/jexec jexec $JAVA_DIR/jre/lib/jexec 100

Вы также можете использовать этот скрипт bash :

#!/bin/bashexport JDK_INSTALL=/opt/jdk1.8.0_112#export JDK_INSTALL=/opt/jdk1.7.0_25#export JDK_INSTALL=/opt/jdk1.6.0_45#JDK 6 and abovesudo update-alternatives --install /usr/bin/appletviewer appletviewer $JDK_INSTALL/bin/appletviewer 1sudo update-alternatives --install /usr/bin/extcheck extcheck $JDK_INSTALL/bin/extcheck 1sudo update-alternatives --install /usr/bin/idlj idlj $JDK_INSTALL/bin/idlj 1sudo update-alternatives --install /usr/bin/jar jar $JDK_INSTALL/bin/jar 1sudo update-alternatives --install /usr/bin/jarsigner jarsigner $JDK_INSTALL/bin/jarsigner 1sudo update-alternatives --install /usr/bin/java java $JDK_INSTALL/bin/java 1sudo update-alternatives --install /usr/bin/javac javac $JDK_INSTALL/bin/javac 1sudo update-alternatives --install /usr/bin/javadoc javadoc $JDK_INSTALL/bin/javadoc 1sudo update-alternatives --install /usr/bin/javah javah $JDK_INSTALL/bin/javah 1sudo update-alternatives --install /usr/bin/javap javap $JDK_INSTALL/bin/javap 1sudo update-alternatives --install /usr/bin/javaws javaws $JDK_INSTALL/bin/javaws 1sudo update-alternatives --install /usr/bin/jconsole jconsole $JDK_INSTALL/bin/jconsole 1sudo update-alternatives --install /usr/bin/jdb jdb $JDK_INSTALL/bin/jdb 1sudo update-alternatives --install /usr/bin/jhat jhat $JDK_INSTALL/bin/jhat 1sudo update-alternatives --install /usr/bin/jinfo jinfo $JDK_INSTALL/bin/jinfo 1sudo update-alternatives --install /usr/bin/jmap jmap $JDK_INSTALL/bin/jmap 1sudo update-alternatives --install /usr/bin/jps jps $JDK_INSTALL/bin/jps 1sudo update-alternatives --install /usr/bin/jrunscript jrunscript $JDK_INSTALL/bin/jrunscript 1sudo update-alternatives --install /usr/bin/jsadebugd jsadebugd $JDK_INSTALL/bin/jsadebugd 1sudo update-alternatives --install /usr/bin/jstack jstack $JDK_INSTALL/bin/jstack 1sudo update-alternatives --install /usr/bin/jstat jstat $JDK_INSTALL/bin/jstat 1sudo update-alternatives --install /usr/bin/jstatd jstatd $JDK_INSTALL/bin/jstatd 1sudo update-alternatives --install /usr/bin/keytool keytool $JDK_INSTALL/bin/keytool 1sudo update-alternatives --install /usr/bin/native2ascii native2ascii $JDK_INSTALL/bin/native2ascii 1sudo update-alternatives --install /usr/bin/orbd orbd $JDK_INSTALL/bin/orbd 1sudo update-alternatives --install /usr/bin/pack200 pack200 $JDK_INSTALL/bin/pack200 1sudo update-alternatives --install /usr/bin/policytool policytool $JDK_INSTALL/bin/policytool 1sudo update-alternatives --install /usr/bin/rmic rmic $JDK_INSTALL/bin/rmic 1sudo update-alternatives --install /usr/bin/rmid rmid $JDK_INSTALL/bin/rmid 1sudo update-alternatives --install /usr/bin/rmiregistry rmiregistry $JDK_INSTALL/bin/rmiregistry 1sudo update-alternatives --install /usr/bin/schemagen schemagen $JDK_INSTALL/bin/schemagen 1sudo update-alternatives --install /usr/bin/serialver serialver $JDK_INSTALL/bin/serialver 1sudo update-alternatives --install /usr/bin/servertool servertool $JDK_INSTALL/bin/servertool 1sudo update-alternatives --install /usr/bin/tnameserv tnameserv $JDK_INSTALL/bin/tnameserv 1sudo update-alternatives --install /usr/bin/unpack200 unpack200 $JDK_INSTALL/bin/unpack200 1sudo update-alternatives --install /usr/bin/wsgen wsgen $JDK_INSTALL/bin/wsgen 1sudo update-alternatives --install /usr/bin/wsimport wsimport $JDK_INSTALL/bin/wsimport 1sudo update-alternatives --install /usr/bin/xjc xjc $JDK_INSTALL/bin/xjc 1sudo update-alternatives --set appletviewer $JDK_INSTALL/bin/appletviewersudo update-alternatives --set extcheck $JDK_INSTALL/bin/extchecksudo update-alternatives --set idlj $JDK_INSTALL/bin/idljsudo update-alternatives --set jar $JDK_INSTALL/bin/jarsudo update-alternatives --set jarsigner $JDK_INSTALL/bin/jarsignersudo update-alternatives --set java $JDK_INSTALL/bin/javasudo update-alternatives --set javac $JDK_INSTALL/bin/javacsudo update-alternatives --set javadoc $JDK_INSTALL/bin/javadocsudo update-alternatives --set javah $JDK_INSTALL/bin/javahsudo update-alternatives --set javap $JDK_INSTALL/bin/javapsudo update-alternatives --set javaws $JDK_INSTALL/bin/javawssudo update-alternatives --set jconsole $JDK_INSTALL/bin/jconsolesudo update-alternatives --set jdb $JDK_INSTALL/bin/jdbsudo update-alternatives --set jhat $JDK_INSTALL/bin/jhatsudo update-alternatives --set jinfo $JDK_INSTALL/bin/jinfosudo update-alternatives --set jmap $JDK_INSTALL/bin/jmapsudo update-alternatives --set jps $JDK_INSTALL/bin/jpssudo update-alternatives --set jrunscript $JDK_INSTALL/bin/jrunscriptsudo update-alternatives --set jsadebugd $JDK_INSTALL/bin/jsadebugdsudo update-alternatives --set jstack $JDK_INSTALL/bin/jstacksudo update-alternatives --set jstat $JDK_INSTALL/bin/jstatsudo update-alternatives --set jstatd $JDK_INSTALL/bin/jstatdsudo update-alternatives --set keytool $JDK_INSTALL/bin/keytoolsudo update-alternatives --set native2ascii $JDK_INSTALL/bin/native2asciisudo update-alternatives --set orbd $JDK_INSTALL/bin/orbdsudo update-alternatives --set pack200 $JDK_INSTALL/bin/pack200sudo update-alternatives --set policytool $JDK_INSTALL/bin/policytoolsudo update-alternatives --set rmic $JDK_INSTALL/bin/rmicsudo update-alternatives --set rmid $JDK_INSTALL/bin/rmidsudo update-alternatives --set rmiregistry $JDK_INSTALL/bin/rmiregistrysudo update-alternatives --set schemagen $JDK_INSTALL/bin/schemagensudo update-alternatives --set serialver $JDK_INSTALL/bin/serialversudo update-alternatives --set servertool $JDK_INSTALL/bin/servertoolsudo update-alternatives --set tnameserv $JDK_INSTALL/bin/tnameservsudo update-alternatives --set unpack200 $JDK_INSTALL/bin/unpack200sudo update-alternatives --set wsgen $JDK_INSTALL/bin/wsgensudo update-alternatives --set wsimport $JDK_INSTALL/bin/wsimportsudo update-alternatives --set xjc $JDK_INSTALL/bin/xjc#JDK 7 and abovesudo update-alternatives --install /usr/bin/jcmd jcmd $JDK_INSTALL/bin/jcmd 1sudo update-alternatives --set jcmd $JDK_INSTALL/bin/jcmd#JDK 8 onlysudo update-alternatives --install /usr/bin/jjs jjs $JDK_INSTALL/bin/jjs 1sudo update-alternatives --install /usr/bin/jdeps jdeps $JDK_INSTALL/bin/jdeps 1sudo update-alternatives --set jjs $JDK_INSTALL/bin/jjssudo update-alternatives --set jdeps $JDK_INSTALL/bin/jdeps

Слишком сложное большинство ответов для меня.

Первоначально Oracle решила иметь возможность устанавливать несколько версий Java, основываясь на настройке некоторых переменных среды.

Это было легко, но слишком сложно для тех, кто не знал этих переменных, и кто-то изобрел "update-java-alternatives".

"обновление-java-альтернативы" оказалось простым, когда все настроено для вас, вам просто нужно запустить эту программу и выбрать нужную версию.

Проблема в том, что это решение слишком сложно настроить, если вам нужно настроить его самостоятельно (вы должны настроить его для каждой команды java).

Лучший ответ - это вернитесь к основам.

установите в своем .bash_profile (для вашего пользователя) или в /etc/profile (для каждого пользователя) следующие переменные:

JAVA_HOME=<The home of your new java distribution>PATH=<The bin directory of your new java distribution>:$PATH

В моем случае это было еще проще... У меня уже было досье в /etc/profile.d со следующим содержимым (только что обновил его до новой структуры каталогов):

export J2SDKDIR=/usr/lib/jvm/jdk1.8.0_121 export J2REDIR=/usr/lib/jvm/jdk1.8.0_121/jreexport PATH=/usr/lib/jvm/jdk1.8.0_121/bin:/usr/lib/jvm/jdk1.8.0_121/db/bin:/usr/lib/jvm/jdk1.8.0_121/jre/bin:$PATHexport JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121export DERBY_HOME=/usr/lib/jvm/jdk1.8.0_121/db

И это все!!!

Обновление: как говорит @newur в комментариях, просто используйте sdkman

Оригинальный ответ ниже


Сделано еще один немного другой сценарий чтобы по умолчанию все материалы, связанные с java, были установлены вручную в JDK:

#!/bin/bash# Run update-alternatives for a manual installed JDKJAVA_HOME=/opt/java/jdk1.8.0_152java_bins=(appletviewer extcheck idlj jarsigner java javac javadoc javafxpackager javah javap javapackager java-rmi.cgi javaws jcmd jconsole jcontrol jdb jdeps jhat jinfo jjs jmap jps jrunscript jsadebugd jstat jstatd jvisualvm keytool native2ascii orbd pack200 policytool rmic rmid schemagen servertool tnameserv wsgen wsimport xjc jar jmc jmc.ini jstack rmiregistry serialver unpack200)for java_bin in ${java_bins[@]}; do    echo "Setting $java_bin..."    update-alternatives --install /usr/bin/$java_bin $java_bin $JAVA_HOME/bin/$java_bin 1    update-alternatives --set $java_bin $JAVA_HOME/bin/$java_bindoneecho "Done."

При этом будут установлены новые альтернативы и установлены эти новые альтернативы по умолчанию.

Это не так сложно, как кажется из других ответов. Вы должны добавить установленную вручную java в список альтернатив, затем переключиться на is: (замените jdk1.7.0_79 на вашу версию)

sudo /usr/sbin/alternatives --install /usr/java/jdk1.7.0_79/bin/java 20000sudo /usr/sbin/alternatives --config java

update-java-alternatives на самом деле довольно хорош.Итак, чтобы заставить его работать с моей ручной установкой: скопируйте jdk1.8.0_45 в / usr /lib /jvm

cp .java-1.7.0-openjdk-amd64.jinfo .java-1.8.0-u45-amd64.jinfoln -s jdk1.8.0_45 java-1.8.0-u45-amd64

Затем я использовал vim для поиска / замены:

vim .java-1.8.0-u45-amd64.jinfo:%s/java-7-openjdk-amd64/java-1.8.0-u45-amd64:wq

Также уменьшите приоритет на 1

: вздох: update-java-alternatives не выполняет установку. Но, по крайней мере, у нас есть файл для работы

VirtualBox:/usr/lib/jvm$ cat .java-1.8.0-u45-amd64.jinfo  | perl -e 'while (<>) { @line = split(/\s+/); $filename = $line[1]; $abspath = $line[2]; $abspath =~ /(.*jdk[^\/]+)/; $manpath = $1 . "/man/man1/"; $manfile = "$manpath$filename.1"; if (-f $manfile) { system("sudo gzip $manfile"); } system("sudo update-alternatives --install /usr/bin/$filename $filename $abspath 1070 --slave /usr/share/man/man1/$filename.1.gz $filename.1.gz $manfile.gz"); }'

Затем я выбрал свою новую установку:

VirtualBox:/usr/lib/jvm$ sudo update-java-alternatives -ljava-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64java-1.8.0-u45-amd64 1070 /usr/lib/jvm/java-1.8.0-u45-amd64VirtualBox:/usr/lib/jvm$ sudo update-java-alternatives -s java-1.8.0-u45-amd64

Я поместил то, что сказали @air-dex и @Anwar, в сценарий. Я знаю, что @ test30 также написал сценарий, но он был слишком сложным для меня (новичка в написании сценариев), чтобы понять. Я просто подумал, что выложу это здесь на случай, если кому-то это может оказаться полезным.

#!/bin/bash# Script to update Java defaults. Run as root.# Adjust according to Java version that you are installingJDK_DIR_NAME="/opt/java/jdk1.8.0_102"# All Java tools according to https://docs.oracle.com/javase/8/docs/technotes/tools/unix/intro.htmlTOOLS="appletviewer extcheck jar java javac javadoc javah javap jdb jdeps keytool jarsigner policytool kinit klist ktab native2ascii rmic rmiregistry rmid serialver tnameserv idlj orbd servertool javapackager pack200 unpack200 javaws jcmd jconsole jmc jvisualvm schemagen wsgen wsimport xjc jps jstat jstatd jinfo jhat jmap jsadebugd jstack jrunscript"for TOOL in $TOOLS; do    CMD1="update-alternatives --install /usr/bin/$TOOL $TOOL $JDK_DIR_NAME/bin/$TOOL 1"    # echo $CMD1    $CMD1    CMD2="update-alternatives --config $TOOL"    # echo $CMD2    $CMD2done

Чтобы настроить полную альтернативу jdk, можно использовать приведенную ниже команду:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_45/bin/java 2 --slave /usr/bin/appletviewer appletviewer  /usr/lib/jvm/jdk1.7.0_45/bin/appletviewer --slave /usr/bin/java-rmi.cgi java-rmi.cgi  /usr/lib/jvm/jdk1.7.0_45/bin/java-rmi.cgi --slave /usr/bin/jmap jmap  /usr/lib/jvm/jdk1.7.0_45/bin/jmap --slave /usr/bin/jstatd jstatd  /usr/lib/jvm/jdk1.7.0_45/bin/jstatd --slave /usr/bin/policytool policytool  /usr/lib/jvm/jdk1.7.0_45/bin/policytool --slave /usr/bin/servertool servertool  /usr/lib/jvm/jdk1.7.0_45/bin/servertool --slave /usr/bin/apt apt  /usr/lib/jvm/jdk1.7.0_45/bin/apt --slave /usr/bin/javac javac  /usr/lib/jvm/jdk1.7.0_45/bin/javac --slave /usr/bin/jcmd jcmd  /usr/lib/jvm/jdk1.7.0_45/bin/jcmd --slave /usr/bin/jps jps  /usr/lib/jvm/jdk1.7.0_45/bin/jps --slave /usr/bin/jvisualvm jvisualvm  /usr/lib/jvm/jdk1.7.0_45/bin/jvisualvm --slave /usr/bin/rmic rmic  /usr/lib/jvm/jdk1.7.0_45/bin/rmic --slave /usr/bin/tnameserv tnameserv  /usr/lib/jvm/jdk1.7.0_45/bin/tnameserv --slave /usr/bin/extcheck extcheck  /usr/lib/jvm/jdk1.7.0_45/bin/extcheck --slave /usr/bin/javadoc javadoc  /usr/lib/jvm/jdk1.7.0_45/bin/javadoc --slave /usr/bin/jconsole jconsole  /usr/lib/jvm/jdk1.7.0_45/bin/jconsole --slave /usr/bin/jrunscript jrunscript  /usr/lib/jvm/jdk1.7.0_45/bin/jrunscript --slave /usr/bin/keytool keytool  /usr/lib/jvm/jdk1.7.0_45/bin/keytool --slave /usr/bin/rmid rmid  /usr/lib/jvm/jdk1.7.0_45/bin/rmid --slave /usr/bin/unpack200 unpack200  /usr/lib/jvm/jdk1.7.0_45/bin/unpack200 --slave /usr/bin/idlj idlj  /usr/lib/jvm/jdk1.7.0_45/bin/idlj --slave /usr/bin/javafxpackager javafxpackager  /usr/lib/jvm/jdk1.7.0_45/bin/javafxpackager --slave /usr/bin/jdb jdb  /usr/lib/jvm/jdk1.7.0_45/bin/jdb --slave /usr/bin/jsadebugd jsadebugd  /usr/lib/jvm/jdk1.7.0_45/bin/jsadebugd --slave /usr/bin/native2ascii native2ascii  /usr/lib/jvm/jdk1.7.0_45/bin/native2ascii --slave /usr/bin/rmiregistry rmiregistry  /usr/lib/jvm/jdk1.7.0_45/bin/rmiregistry --slave /usr/bin/wsgen wsgen  /usr/lib/jvm/jdk1.7.0_45/bin/wsgen --slave /usr/bin/jar jar  /usr/lib/jvm/jdk1.7.0_45/bin/jar --slave /usr/bin/javah javah  /usr/lib/jvm/jdk1.7.0_45/bin/javah --slave /usr/bin/jhat jhat  /usr/lib/jvm/jdk1.7.0_45/bin/jhat --slave /usr/bin/jstack jstack  /usr/lib/jvm/jdk1.7.0_45/bin/jstack --slave /usr/bin/orbd orbd  /usr/lib/jvm/jdk1.7.0_45/bin/orbd --slave /usr/bin/schemagen schemagen  /usr/lib/jvm/jdk1.7.0_45/bin/schemagen --slave /usr/bin/wsimport wsimport  /usr/lib/jvm/jdk1.7.0_45/bin/wsimport --slave /usr/bin/jarsigner jarsigner  /usr/lib/jvm/jdk1.7.0_45/bin/jarsigner --slave /usr/bin/javap javap  /usr/lib/jvm/jdk1.7.0_45/bin/javap --slave /usr/bin/jinfo jinfo  /usr/lib/jvm/jdk1.7.0_45/bin/jinfo --slave /usr/bin/jstat jstat  /usr/lib/jvm/jdk1.7.0_45/bin/jstat --slave /usr/bin/pack200 pack200  /usr/lib/jvm/jdk1.7.0_45/bin/pack200 --slave /usr/bin/serialver serialver  /usr/lib/jvm/jdk1.7.0_45/bin/serialver --slave /usr/bin/xjc xjc  /usr/lib/jvm/jdk1.7.0_45/bin/xjc

Я использовал это после того, как извлек tar.gz файл для sun jdk1.7 в /usr/lib/jvm/

Вы хотели бы заменить jdk1.7.0 именем каталога имеющейся у вас версии и номером 2 на любой номер, который вы хотите, чтобы был альтернативным.

скрипт для переключения между jdk: dotfiles/java at master · gayanW/dotfiles · GitHub