web-dev-qa-db-fra.com

Comment configurer Java par défaut sur un JRE / JDK installé manuellement?

Ubuntu 12.04 AMD64 est installé sur ma machine. Sur les versions précédentes d’Ubuntu, c’était extrêmement facile, il existe maintenant cette commande update-Java-alternatives avec une page de manuel vraiment mauvaise.

Je viens juste de décompresser mon JDK sur une partition montée telle que /media/mydisk/jdk, comment puis-je forcer l'utilisation de ce JDK au lieu de celui fourni dans le référentiel Ubuntu?

Quelle est la logique derrière ce update-Java-alternatives?

52
user827992

Remarque: update-Java-alternatives ne fonctionnera pas avec les installations manuelles. Dans tous les cas, il ne semble pas y avoir de capacités spéciales que update-alternatives ne possède pas, à l'exception de la commodité.

Comme alternative graphique à la méthode en ligne de commande de @ AnwarShah, envisagez d'utiliser Alternatives à Gnome (Sudo apt-get install galternatives):

  • Démarrer GAlternatives , sélectionnez chaque option Java , modifiez-la en mode manuel, puis Ajoutez votre alternative (voici l'exemple du JRE IBM installé dans mon répertoire personnel):

    enter image description here

    enter image description here

    enter image description here

29
ish

Vous pouvez le faire avec 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

Vous devez également faire cela pour d’autres composants jdk. Ces composants sont appletviewername__, extcheckname__, idljname__, jarname__, jarsignername__, Javaname__, javacname__, javadocname__, javahname__, javapname__, javawsname__, jconsolename__, jdbname__, jexecname__, jhatname__, jinfoname__, jmapname__, jpsname__, jrunscriptname__, jsadebugdname__, jstackname__, jstatname__, jstatdname__, keytool, mozilla-javaplugin.so, native2ascii, orbdname__, pack200, policytoolname__, rmicname__, rmidname__, rmiregistryname__, schemagenname__, serialvername__, servertoolname__, tnameservname__, unpack200, wsgenname__, wsimportname__, xjcname__.

Pour plus d'informations, vous pouvez consulter les pages de manuel de update-alternatives: man update-alternatives.

La commande update-Java-alternatives définit des alternatives pour les composants Java et elle semble utiliser update-alternatives pour cela.

EDIT: La réponse ci-dessus vise Java 6.

  • Pour Java 7, vous devez ajouter jcmdà la liste Java 6.
  • Pour Java 8, vous devez ajouter jcmdname__, jjset jdepsà la liste Java 6.
  • Pour Java 9, vous devez ajouter jcmdname__, jjsname__, jdepset jshellà la liste Java 6.
39
air-dex

En fait, j'utilise ces commandes pour installer jdk1.6.0_25. (Consultez le lien ci-dessous pour connaître le script de mise à jour complet-alternatives mis à jour)

Sudo update-alternatives --install /usr/bin/Java java /media/mydisk/jdk/bin/Java 100
Sudo update-alternatives --install /usr/bin/javac javac /media/mydisk/jdk/javac 100
Sudo update-alternatives --install /usr/bin/Java_vm Java_vm /media/mydisk/jdk/bin/Java_vm 100
Sudo update-alternatives --install /usr/bin/jcontrol jcontrol /media/mydisk/jdk/bin/jcontrol 100
Sudo update-alternatives --install /usr/bin/jexec jexec /media/mydisk/jdk/jre/lib/jexec 100
Sudo 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

Et ensuite, vous pouvez utiliser ces commandes pour définir par défaut. Très probablement, ceux-ci ne sont pas nécessaires.

Sudo update-alternatives --config Java
Sudo update-alternatives --config javac
Sudo update-alternatives --config Java_vm
Sudo update-alternatives --config jcontrol
Sudo update-alternatives --config jexec

Vous pouvez obtenir plus d'aide en utilisant la commande man update-alternatives ou vous pouvez voir le manuel dans votre navigateur ici

Le update-Java-alternatives décrit dans la page de manuel a pour but de:

update-Java-alternatives met à jour toutes les alternatives appartenant à un seul runtime ou kit de développement pour le langage Java. Un paquet fournit ces informations sur ses alternatives dans /usr/lib/jvm/.<jname>.jinfo.

Tous les outils jdk sont

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

J'espère que ceci vous aidera.


Mettre à jour

J'utilise ce script pour extraire un jdk téléchargé et utiliser update-alternatives pour le définir complètement. Modifiez le nom du fichier jdk et le Java_DIR en fonction de vos besoins. Java_DIR est le chemin d'accès à votre dossier extrait jdk.

#!/bin/sh

Java_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 links
Sudo update-alternatives --quiet --install /usr/lib/xulrunner-addons/plugins/libjavaplugin.so xulrunner-1.9-javaplugin.so $Java_DIR/jre/lib/AMD64/libnpjp2.so 100
Sudo update-alternatives --quiet --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so $Java_DIR/jre/lib/AMD64/libnpjp2.so 100
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo 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.1
Sudo update-alternatives --quiet --install /usr/bin/Java-rmi.cgi Java-rmi.cgi $Java_DIR/bin/Java-rmi.cgi 100
Sudo update-alternatives --quiet --install /usr/bin/ControlPanel ControlPanel $Java_DIR/jre/bin/ControlPanel 100
Sudo update-alternatives --quiet --install /usr/bin/Java java $Java_DIR/jre/bin/Java 100
Sudo update-alternatives --quiet --install /usr/bin/Java_vm Java_vm $Java_DIR/jre/bin/Java_vm 100
Sudo update-alternatives --quiet --install /usr/bin/javaws javaws $Java_DIR/jre/bin/javaws 100
Sudo update-alternatives --quiet --install /usr/bin/jcontrol jcontrol $Java_DIR/jre/bin/jcontrol 100
Sudo update-alternatives --quiet --install /usr/bin/keytool keytool $Java_DIR/jre/bin/keytool 100
Sudo update-alternatives --quiet --install /usr/bin/pack200 pack200 $Java_DIR/jre/bin/pack200 100
Sudo update-alternatives --quiet --install /usr/bin/policytool policytool $Java_DIR/jre/bin/policytool 100
Sudo update-alternatives --quiet --install /usr/bin/rmid rmid $Java_DIR/jre/bin/rmid 100
Sudo update-alternatives --quiet --install /usr/bin/rmiregistry rmiregistry $Java_DIR/jre/bin/rmiregistry 100
Sudo update-alternatives --quiet --install /usr/bin/unpack200 unpack200 $Java_DIR/jre/bin/unpack200 100
Sudo update-alternatives --quiet --install /usr/bin/orbd orbd $Java_DIR/jre/bin/orbd 100
Sudo update-alternatives --quiet --install /usr/bin/servertool servertool $Java_DIR/jre/bin/servertool 100
Sudo update-alternatives --quiet --install /usr/bin/tnameserv tnameserv $Java_DIR/jre/bin/tnameserv 100
Sudo update-alternatives --quiet --install /usr/bin/jexec jexec $Java_DIR/jre/lib/jexec 100
24
Anwar

Trop complexe la plupart des réponses pour moi.

Initialement, Oracle a décidé de pouvoir installer plusieurs versions de Java, en fonction de la définition de certaines variables d'environnement.

C'était facile, mais trop complexe pour ceux qui ne connaissaient pas ces variables et quelqu'un a inventé "update-Java-alternatives".

"update-Java-alternatives" s'est révélé simple: lorsque tout est configuré pour vous, il vous suffit d'exécuter ce programme et de choisir la version de votre choix.

Le problème est que cette solution est trop complexe à configurer, si vous devez vous configurer vous-même (vous devez la configurer pour chaque commande de Java).

La meilleure réponse est retournez à la base.

définissez dans votre .bash_profile (pour votre utilisateur) ou dans /etc/profile (pour chaque utilisateur) les variables suivantes:

Java_HOME=<The home of your new Java distribution>

PATH=<The bin directory of your new Java distribution>:$PATH

Dans mon cas, c'était encore plus facile ... J'avais déjà un fichier dans /etc/profile.d avec le contenu suivant (juste mis à jour dans la nouvelle structure de répertoire):

export J2SDKDIR=/usr/lib/jvm/jdk1.8.0_121 
export J2REDIR=/usr/lib/jvm/jdk1.8.0_121/jre
export 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:$PATH
export Java_HOME=/usr/lib/jvm/jdk1.8.0_121
export DERBY_HOME=/usr/lib/jvm/jdk1.8.0_121/db

Et c'est tout!!!

3
julio_map

Vous pouvez également utiliser ce script bash:

#!/bin/bash

export 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 above

Sudo update-alternatives --install /usr/bin/appletviewer appletviewer $JDK_INSTALL/bin/appletviewer 1
Sudo update-alternatives --install /usr/bin/extcheck extcheck $JDK_INSTALL/bin/extcheck 1
Sudo update-alternatives --install /usr/bin/idlj idlj $JDK_INSTALL/bin/idlj 1
Sudo update-alternatives --install /usr/bin/jar jar $JDK_INSTALL/bin/jar 1
Sudo update-alternatives --install /usr/bin/jarsigner jarsigner $JDK_INSTALL/bin/jarsigner 1
Sudo update-alternatives --install /usr/bin/Java java $JDK_INSTALL/bin/Java 1
Sudo update-alternatives --install /usr/bin/javac javac $JDK_INSTALL/bin/javac 1
Sudo update-alternatives --install /usr/bin/javadoc javadoc $JDK_INSTALL/bin/javadoc 1
Sudo update-alternatives --install /usr/bin/javah javah $JDK_INSTALL/bin/javah 1
Sudo update-alternatives --install /usr/bin/javap javap $JDK_INSTALL/bin/javap 1
Sudo update-alternatives --install /usr/bin/javaws javaws $JDK_INSTALL/bin/javaws 1
Sudo update-alternatives --install /usr/bin/jconsole jconsole $JDK_INSTALL/bin/jconsole 1
Sudo update-alternatives --install /usr/bin/jdb jdb $JDK_INSTALL/bin/jdb 1
Sudo update-alternatives --install /usr/bin/jhat jhat $JDK_INSTALL/bin/jhat 1
Sudo update-alternatives --install /usr/bin/jinfo jinfo $JDK_INSTALL/bin/jinfo 1
Sudo update-alternatives --install /usr/bin/jmap jmap $JDK_INSTALL/bin/jmap 1
Sudo update-alternatives --install /usr/bin/jps jps $JDK_INSTALL/bin/jps 1
Sudo update-alternatives --install /usr/bin/jrunscript jrunscript $JDK_INSTALL/bin/jrunscript 1
Sudo update-alternatives --install /usr/bin/jsadebugd jsadebugd $JDK_INSTALL/bin/jsadebugd 1
Sudo update-alternatives --install /usr/bin/jstack jstack $JDK_INSTALL/bin/jstack 1
Sudo update-alternatives --install /usr/bin/jstat jstat $JDK_INSTALL/bin/jstat 1
Sudo update-alternatives --install /usr/bin/jstatd jstatd $JDK_INSTALL/bin/jstatd 1
Sudo update-alternatives --install /usr/bin/keytool keytool $JDK_INSTALL/bin/keytool 1
Sudo update-alternatives --install /usr/bin/native2ascii native2ascii $JDK_INSTALL/bin/native2ascii 1
Sudo update-alternatives --install /usr/bin/orbd orbd $JDK_INSTALL/bin/orbd 1
Sudo update-alternatives --install /usr/bin/pack200 pack200 $JDK_INSTALL/bin/pack200 1
Sudo update-alternatives --install /usr/bin/policytool policytool $JDK_INSTALL/bin/policytool 1
Sudo update-alternatives --install /usr/bin/rmic rmic $JDK_INSTALL/bin/rmic 1
Sudo update-alternatives --install /usr/bin/rmid rmid $JDK_INSTALL/bin/rmid 1
Sudo update-alternatives --install /usr/bin/rmiregistry rmiregistry $JDK_INSTALL/bin/rmiregistry 1
Sudo update-alternatives --install /usr/bin/schemagen schemagen $JDK_INSTALL/bin/schemagen 1
Sudo update-alternatives --install /usr/bin/serialver serialver $JDK_INSTALL/bin/serialver 1
Sudo update-alternatives --install /usr/bin/servertool servertool $JDK_INSTALL/bin/servertool 1
Sudo update-alternatives --install /usr/bin/tnameserv tnameserv $JDK_INSTALL/bin/tnameserv 1
Sudo update-alternatives --install /usr/bin/unpack200 unpack200 $JDK_INSTALL/bin/unpack200 1
Sudo update-alternatives --install /usr/bin/wsgen wsgen $JDK_INSTALL/bin/wsgen 1
Sudo update-alternatives --install /usr/bin/wsimport wsimport $JDK_INSTALL/bin/wsimport 1
Sudo update-alternatives --install /usr/bin/xjc xjc $JDK_INSTALL/bin/xjc 1

Sudo update-alternatives --set appletviewer $JDK_INSTALL/bin/appletviewer
Sudo update-alternatives --set extcheck $JDK_INSTALL/bin/extcheck
Sudo update-alternatives --set idlj $JDK_INSTALL/bin/idlj
Sudo update-alternatives --set jar $JDK_INSTALL/bin/jar
Sudo update-alternatives --set jarsigner $JDK_INSTALL/bin/jarsigner
Sudo update-alternatives --set Java $JDK_INSTALL/bin/Java
Sudo update-alternatives --set javac $JDK_INSTALL/bin/javac
Sudo update-alternatives --set javadoc $JDK_INSTALL/bin/javadoc
Sudo update-alternatives --set javah $JDK_INSTALL/bin/javah
Sudo update-alternatives --set javap $JDK_INSTALL/bin/javap
Sudo update-alternatives --set javaws $JDK_INSTALL/bin/javaws
Sudo update-alternatives --set jconsole $JDK_INSTALL/bin/jconsole
Sudo update-alternatives --set jdb $JDK_INSTALL/bin/jdb
Sudo update-alternatives --set jhat $JDK_INSTALL/bin/jhat
Sudo update-alternatives --set jinfo $JDK_INSTALL/bin/jinfo
Sudo update-alternatives --set jmap $JDK_INSTALL/bin/jmap
Sudo update-alternatives --set jps $JDK_INSTALL/bin/jps
Sudo update-alternatives --set jrunscript $JDK_INSTALL/bin/jrunscript
Sudo update-alternatives --set jsadebugd $JDK_INSTALL/bin/jsadebugd
Sudo update-alternatives --set jstack $JDK_INSTALL/bin/jstack
Sudo update-alternatives --set jstat $JDK_INSTALL/bin/jstat
Sudo update-alternatives --set jstatd $JDK_INSTALL/bin/jstatd
Sudo update-alternatives --set keytool $JDK_INSTALL/bin/keytool
Sudo update-alternatives --set native2ascii $JDK_INSTALL/bin/native2ascii
Sudo update-alternatives --set orbd $JDK_INSTALL/bin/orbd
Sudo update-alternatives --set pack200 $JDK_INSTALL/bin/pack200
Sudo update-alternatives --set policytool $JDK_INSTALL/bin/policytool
Sudo update-alternatives --set rmic $JDK_INSTALL/bin/rmic
Sudo update-alternatives --set rmid $JDK_INSTALL/bin/rmid
Sudo update-alternatives --set rmiregistry $JDK_INSTALL/bin/rmiregistry
Sudo update-alternatives --set schemagen $JDK_INSTALL/bin/schemagen
Sudo update-alternatives --set serialver $JDK_INSTALL/bin/serialver
Sudo update-alternatives --set servertool $JDK_INSTALL/bin/servertool
Sudo update-alternatives --set tnameserv $JDK_INSTALL/bin/tnameserv
Sudo update-alternatives --set unpack200 $JDK_INSTALL/bin/unpack200
Sudo update-alternatives --set wsgen $JDK_INSTALL/bin/wsgen
Sudo update-alternatives --set wsimport $JDK_INSTALL/bin/wsimport
Sudo update-alternatives --set xjc $JDK_INSTALL/bin/xjc


#JDK 7 and above

Sudo update-alternatives --install /usr/bin/jcmd jcmd $JDK_INSTALL/bin/jcmd 1

Sudo update-alternatives --set jcmd $JDK_INSTALL/bin/jcmd


#JDK 8 only

Sudo update-alternatives --install /usr/bin/jjs jjs $JDK_INSTALL/bin/jjs 1
Sudo update-alternatives --install /usr/bin/jdeps jdeps $JDK_INSTALL/bin/jdeps 1

Sudo update-alternatives --set jjs $JDK_INSTALL/bin/jjs
Sudo update-alternatives --set jdeps $JDK_INSTALL/bin/jdeps
3
Erwan Delannee

Je mets ce que @ air-dex et @Anwar ont dit dans un script. Je sais que @ test30 a également écrit un script, mais c’était trop compliqué pour moi (un novice en scripts) de comprendre. Je pensais juste que je le posterais au cas où quelqu'un le trouverait utile.

#!/bin/bash

# Script to update Java defaults. Run as root.

# Adjust according to Java version that you are installing
JDK_DIR_NAME="/opt/Java/jdk1.8.0_102"

# All Java tools according to https://docs.Oracle.com/javase/8/docs/technotes/tools/unix/intro.html
TOOLS="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
    $CMD2
done
1
murf

Ce n'est pas aussi compliqué que le montrent les autres réponses. Vous devez ajouter le manuel installé Java à la liste des alternatives, puis basculer sur is: (remplacez jdk1.7.0_79 par votre version)

Sudo /usr/sbin/alternatives --install /usr/Java/jdk1.7.0_79/bin/Java 20000
Sudo /usr/sbin/alternatives --config Java
1
Mike

update-Java-alternatives est en fait assez joli. Donc, pour que cela fonctionne avec mon installation manuelle: copiez jdk1.8.0_45 dans/usr/lib/jvm

cp .Java-1.7.0-openjdk-AMD64.jinfo .Java-1.8.0-u45-AMD64.jinfo
ln -s jdk1.8.0_45 Java-1.8.0-u45-AMD64

Ensuite, j'ai utilisé vim pour une recherche/remplacement:

vim .Java-1.8.0-u45-AMD64.jinfo
:%s/Java-7-openjdk-AMD64/Java-1.8.0-u45-AMD64
:wq

Décrémentez également la priorité de 1

: soupir: update-Java-alternatives ne fait pas l'installation. Mais au moins nous avons un fichier avec lequel travailler

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"); }'

Ensuite, j'ai sélectionné ma nouvelle installation:

VirtualBox:/usr/lib/jvm$ Sudo update-Java-alternatives -l
Java-1.7.0-openjdk-AMD64 1071 /usr/lib/jvm/Java-1.7.0-openjdk-AMD64
Java-1.8.0-u45-AMD64 1070 /usr/lib/jvm/Java-1.8.0-u45-AMD64

VirtualBox:/usr/lib/jvm$ Sudo update-Java-alternatives -s Java-1.8.0-u45-AMD64
1
David Walia

# J'ai écrit un script simple

(
lookforJdks=~
echo $lookforJdks
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo $"$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo $"$jdks" | cut -d' ' -f $choose`/bin
for e in 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 jvisualvm jmc; do Sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)
0
test30

J'utilise quelque chose comme ce qui suit pour télécharger et installer le dernier Java 8:

JDK_ALT_LINK_Java=/usr/bin/Java
URL_TO_DOWNLOAD='http://www.Java.net/download/jdk8u60/archive/b17/binaries/jdk-8u60-ea-bin-b17-linux-x64-26_may_2015.tar.gz'

JDK8_ARCHIVE=$(basename $URL_TO_DOWNLOAD)

wget "${URL_TO_DOWNLOAD}"
tar zxf "${JDK8_ARCHIVE}"
mv jdk1.8.0_60/ /usr/lib/jvm/
update-alternatives --install /usr/bin/Java java /usr/lib/jvm/jdk1.8.0_60/bin/Java 1008000060
0
Thomas Bratt

Pour configurer une alternative complète à jdk, utilisez la commande ci-dessous:

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

Je l'ai utilisé après avoir extrait le fichier tar.gz de Sun jdk1.7 dans/usr/lib/jvm /

Vous souhaitez remplacer jdk1.7.0 par le nom de répertoire de la version que vous possédez et le numéro 2 par le numéro que vous souhaitez utiliser comme alternative.

0
rmc

J'ai tout purgé sur Java 9 et installé manuellement le nouveau Java 10.

Remarque : Vous avez besoin de update-alternatives uniquement si vous avez plusieurs versions de Java.

Remarque : Vous pouvez tout purger à propos de Java avant de réinstaller le nouveau Java.

 Sudo apt purge Java*

Pour Java 10 nouvelle installation

  1. Téléchargez JDK 10 à partir d’ici (vous pouvez télécharger JRE et le serveur JRE): http://www.Oracle.com/technetwork/Java/javase/downloads/index.html
  2. Extrayez et mettez quelque part dans le répertoire /opt/Java. Si vous mettez JDK dans le répertoire opt/Java, il sera utilisable par tous les utilisateurs.

    ( Remarque : J'ai téléchargé JDK, JRE et JRE serveur, puis extrait JDK et renommé extrait le dossier en jdk10, extrait JRE et renommé extrait le dossier en jre10, puis le serveur JRE extrait et renommé, a extrait le dossier sur jre10server comme indiqué dans l’instantané ci-dessous).

  3. Mettez à jour votre fichier/etc/environment comme ci-dessous enter image description here

Maintenant, vous devez recharger le fichier de script /etc/environment dans le système à l’aide de la commande source ci-dessous.

source /etc/environment

enter image description here

Si vous voulez en savoir plus sur update-alternatives alors voici le lien: Comment puis-je faire Java default à un JRE/JDK installé manuellement?

0
Uddhav Gautam

Fait n autre script légèrement différent par défaut pour tout Java lié à un JDK installé manuellement:

#!/bin/bash

# Run update-alternatives for a manual installed JDK

Java_HOME=/opt/Java/jdk1.8.0_152
Java_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_bin
done

echo "Done."

Cela installe les nouvelles alternatives et définit ces nouvelles alternatives par défaut.

0
isalgueiro