Existe-t-il un moyen de basculer rapidement sur toutes les alternatives liées à Java en utilisant update-alternatives
?
Par exemple, si vous souhaitez passer de Java à 7, je lance sudo update-alternatives --config java
et sélectionne Java 7 OpenJdk. Mais si je cours update-alternatives --get-selections | grep java
je reçois ce qui suit,
appletviewer auto /usr/lib/jvm/java-6-openjdk-amd64/bin/appletviewer
extcheck auto /usr/lib/jvm/java-6-openjdk-amd64/bin/extcheck
idlj auto /usr/lib/jvm/java-6-openjdk-amd64/bin/idlj
itweb-settings auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/itweb-settings
jar auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
jarsigner auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
java manual /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
javac auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javac
javadoc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javadoc
javah auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javah
javap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/javap
javaws auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/javaws
jconsole auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jconsole
jdb auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jdb
jexec auto /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jexec
jhat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jhat
jinfo auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jinfo
jmap auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jmap
jps auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jps
jrunscript auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jrunscript
jsadebugd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jsadebugd
jstack auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstack
jstat auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstat
jstatd auto /usr/lib/jvm/java-6-openjdk-amd64/bin/jstatd
keytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/keytool
native2ascii auto /usr/lib/jvm/java-6-openjdk-amd64/bin/native2ascii
orbd auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/orbd
pack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/pack200
policytool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/policytool
rmic auto /usr/lib/jvm/java-6-openjdk-amd64/bin/rmic
rmid auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmid
rmiregistry auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmiregistry
schemagen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen
serialver auto /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver
servertool auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/servertool
tnameserv auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/tnameserv
unpack200 auto /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/unpack200
wsgen auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen
wsimport auto /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport
xjc auto /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc
Comme vous pouvez le constater, mon alternative à Java a été basculée sur 7, mais toutes les autres alternatives basées sur OpenJDK 6 n'ont pas été basculées. Bien sûr, je pourrais commuter chacun manuellement ou écrire un script pour le faire, mais je suppose qu’il existe un meilleur moyen de le faire.
la source
update-java-alternatives
modifie toutes les autres alternatives java, même lorsque le paramètre de plug-in génère une erreur.update-java-alternatives --set java-1.8.0-openjdk-amd64
j'ai encoredefault-java -> /usr/lib/jvm/java-7-oracle
. Est-ce causé par l'no alternatives for mozilla-javaplugin.so
erreur? Comment puis-je changer cela aussi?jbro a posé la même question sur http://ubuntuforums.org/showthread.php?t=1817528 et a écrit un script pour ce numéro,
S'il n'y a pas de meilleure réponse, cela semble être une solution de contournement solide, mais je suppose qu'il doit exister un meilleur moyen
update-alternatives
de gérer cela.J'ai un peu modifié le code, car il ne vous permet pas de faire les modifications avant de les installer. J'ai ajouté deux autres lignes comme suit ...
la source
Pour Oracle JVM, lancez ceci:
la source
<TL; DR> update-java-alternatives utilise le fichier .jinfo pour déterminer qui des alternatives à travers l' interrupteur , mais attend également d'eux ont été configurés séparément.
Créez un nouveau fichier .jinfo et des entrées update-alternt si votre JRE / JDK téléchargé ne bascule pas avec update-java-alternatives
[Détails]
Pour le configurer manuellement:
Décompressez votre nouveau jdk avec le jdk existant dans
/usr/lib/jvm/
Générez un fichier .jdkname.jinfo en dupliquant un autre fichier .jinfo dans le dossier (ou récupérez-en un depuis une autre installation Ubuntu: vous recherchez le modèle autant que tout autre élément).
Le nom de fichier. jdkname .jinfo doit correspondre au nom de dossier jdk.
Modifiez le contenu pour que l'en-tête (noms) et les chemins de fichier (entrées de programme) correspondent à votre nouvelle installation.
Supprimez toutes les lignes faisant référence à des programmes omis dans votre version et ajoutez des lignes pour les nouveaux programmes dans
/bin
Générez des alternatives pour tous les programmes maintenant dans votre paquet .jinfo avec ce modèle:
(Plusieurs réponses connexes ont écrit cela à partir du contenu de / bin ou vous pouvez effectuer une recherche / un remplacement d'expression régulière sur votre fichier .jinfo pour générer les commandes de script.)
Notez que 100 n’est que la priorité prise en compte lors de la définition de la version de jdk à l’aide du drapeau automatique.
Vérifiez les alternatives Java et utilisez le JDK.
Notez que certains JDK n'incluent pas le JRE, ajoutez-le ou supprimez ces entrées jinfo.
la source