134 votes

update-java-alternatives vs update-alternatives --config java

Sur Ubuntu 12.04 LTS, j'ai installé le JDK7 de Sun, Eclipse et l'IDE Arduino. Je veux que l'Arduino utilise OpenJDK 6 et qu'Eclipse utilise le JDK 7 de Sun.

D'après ce que j'ai compris, je dois choisir manuellement quel Java utiliser avant de lancer chaque application. Cela m'a conduit à la update-java-alternatives -l commande. Lorsque je l'exécute, je vois seulement ce qui suit :

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

mais quand j'exécute update-alternatives --config java Je vois ce qui suit :

*0  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   auto mode
1  /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   manual mode
2  /usr/lib/jvm/jdk1.7.0/bin/java                   manual mode
3  /usr/lib/jvm/jre1.7.0/bin/java                   manual mode

Je ne comprends pas pourquoi le update-java-alternatives n'affiche pas les mêmes 3 options. Je ne comprends pas non plus comment passer d'OpenJDK6 à JDK7. Comment puis-je utiliser OpenJDK6 pour le développement Arduino et Sun JDK7 pour le développement Eclipse/Android ?

178voto

Ankit Points 11

sudo update-alternatives --config java

Configure la valeur par défaut pour le programme "java". C'est la VM Java.

sudo update-alternatives --config javac

Configure le compilateur Java par défaut.

Vous pouvez également le constater, car la première commande énumère un grand nombre de dossiers "JRE" (Java Runtime Environment) et le programme s'appelle simplement "java".

Si je vérifie quelle version est utilisée en lançant la commande java -version ou javac -version , Je peux voir, que chaque commande change le programme utilisé.

Cependant, l'utilisation de update-java-alternatives avec un changement de version du JDK les deux pour moi. En utilisant les premières commandes, vous pouvez utiliser une VM Java et un compilateur Java de différents JDKs.

update-java-alternatives requiert la présence d'un fichier avec l'extension .jinfo dans le répertoire /usr/lib/jvm. Le paquetage opendjk est livré avec un fichier .jinfo, le jdk d'Oracle (anciennement Sun) ne l'est pas. Comme alternative, vous configurez les alternatives sans update-java-alternatives :

Par exemple, pour ajouter java à partir du répertoire jvm /usr/lib/jvm/jdk-12.0.1 ( répertoire par défaut du paquet Debian d'Oracle ) avec la priorité 2082, utilisez la commande suivante :

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

Quant au passage à des environnements de développement différents :

Parlez-vous du démarrage de l'IDE lui-même avec différentes versions de Java ou de l'utilisation de différentes versions ? sur l'IDE pour la compilation et l'exécution de votre application ?

Pour 1.. : Vous pouvez spécifier la JVM à utiliser dans le fichier eclipse.ini, comme décrit ci-dessous. aquí . Je ne sais pas comment faire cela pour l'IDE Arduino.

Pour le point 2 : Dans Eclipse, vous pouvez sélectionner le JRE/JDK à utiliser dans Fenêtre -> Préférences -> Java -> JREs installés. Et sous Java -> Compilateur, vous pouvez choisir une ancienne conformité Java si vous le souhaitez.

EDITAR: Cette page DigitalOcean a également une très bonne explication de tout ce qui concerne Java sur Ubuntu.

26voto

fmmarques Points 371

update-java-alternatives est un programme visant à mettre à jour les alternatives pour jre/jdk installations.

update-alternatives est un système de gestion de liens symboliques pour linux (je suis sûr qu'il y a peu de nouvelles ici).

Vous pouvez, et devriez, utiliser les deux update-java-alternatives y update-alternatives ensemble.

Tout d'abord, assurez-vous que toutes les alternatives sont correctement configurées. java et javac n'en sont que quelques-unes. Il existe javadoc , rmic , serialver et autres, en substituant les variables ci-dessus par : native2ascii y /opt/jdk1.8.0_40/bin/native2ascii doit signaler si l'alternative est installée et/ou sélectionnée.

Une fois que toutes les alternatives sont configurées, vous pouvez alors créer des liens en /usr/lib/jvm à votre installation manuelle.

Afin de configurer update-java-alternatives vous devez utiliser un fichier caché portant le même nom que votre répertoire mais préfixé par un . (point).

J'espère que cela vous aidera.

Bibliographie

man -S 8 update-java-alternatives

http://tech.lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu

0voto

Juste un petit mot (trop gros pour un commentaire). Si vous devez automatiquement passer à Java 8 (compilateur 1.8), dans un one-liner, par exemple pour un script ou une suite de tests d'intégration continue, vous pouvez exécuter

sudo update-java-alternatives -s $(sudo update-java-alternatives -l | grep 8 | cut -d " " -f1) || echo '.'

Il récupérera automatiquement toute version de java 8 disponible et la définira en utilisant la commande update-java-alternatives .

El || echo '.' à la fin assure juste que la commande renvoie un succès, parce que bizarrement update-java-alternatives par défaut renvoie une erreur (1). Vous pouvez l'ignorer si vous n'en avez pas besoin pour une suite de tests.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X