web-dev-qa-db-fra.com

update-Java-alternatives et update-alternatives --config java

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

De mon point de vue, je dois choisir manuellement le Java à utiliser avant de lancer chaque application. Cela m'a conduit à la commande update-Java-alternatives -l. Quand je lance ceci, je ne vois que ce qui suit:

Java-1.6.0-openjdk-AMD64 1061 /usr/lib/jvm/Java-1.6.0-openjdk-AMD64

mais quand je lance 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 3 mêmes options. Je ne comprends pas non plus comment basculer entre OpenJDK6 et JDK7. Comment puis-je utiliser OpenJDK6 pour le développement Arduino et Sun JDK7 pour le développement Eclipse/Android?

85
Stan Smith

Sudo update-alternatives --config Java

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

Sudo update-alternatives --config javac

Configure le compilateur Java par défaut.

Vous pouvez également voir cela, car la première commande répertorie un grand nombre de dossiers "JRE" (Java Runtime Environment) et que le programme s'appelle simplement "Java".

Si je vérifie quelle version est utilisée en exécutant la commande Java -version ou javac -version, je peux voir que chaque commande modifie le programme utilisé.

Cependant, utiliser update-Java-alternatives avec une version du JDK change les deux programmes pour moi. En utilisant les premières commandes, vous pouvez utiliser un compilateur Java VM et Java provenant de différents JDK.

Il semble donc que vous deviez également installer le paquetage openjdk-7-jdk. Il semble que vous n’ayez installé que openjdk-7-jre.

En ce qui concerne la commutation pour différents environnements de développement:

Parlez-vous de démarrer le IDE lui-même avec différentes versions de Java ou d'utiliser différentes versions dans le IDE pour la compilation et l'exécution de votre application?

Pour 1 .: Vous pouvez spécifier quelle machine virtuelle à utiliser dans Eclipse.ini, comme décrit ici . Je ne sais pas comment faire cela pour l'IDE Arduino.

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

EDIT: Cette page de DigitalOcean contient également une très belle explication de tout ce qui concerne Java sur Ubuntu.

114
Benjamin Maurer

update-Java-alternatives est un programme permettant de mettre à jour des alternatives pour les installations de jre/jdk.

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 réellement utiliser les deux update-Java-alternatives et update-alternatives ensemble.

Tout d'abord, assurez-vous que toutes les alternatives sont configurées correctement. Java et javac ne sont que quelques-uns. Il y a javadocname__, rmicname__, serialveret autres, en remplaçant les variables ci-dessus par: native2ascii et /opt/jdk1.8.0_40/bin/native2ascii devraient indiquer si la variante est installée et/ou sélectionnée.

Lorsque toutes les alternatives sont configurées, vous pouvez créer des liens dans /usr/lib/jvm vers 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 t'aides.

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-ubunt

13
fmmarques