D'une manière ou d'une autre, je me suis retrouvé avec deux répertoires pour OpenJdk 8 sur mon système Ubuntu 16.04:
/usr/lib/jvm/Java-8-openjdk-AMD64
/usr/lib/jvm/Java-1.8.0-openjdk-AMD64
Le problème est que le premier répertoire semble être corrompu. Si je fais /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java HelloWorld
sur un fichier HelloWorld.class
existant, je n’obtiens rien, mais faire /usr/lib/jvm/Java-1.8.0-openjdk-AMD64/bin/Java HelloWorld
produit la sortie attendue.
Maintenant, regardez ceci:
core$ ll /etc/alternatives/jav*
lrwxrwxrwx 1 root root 42 Nov 7 11:02 /etc/alternatives/Java -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java*
lrwxrwxrwx 1 root root 52 Nov 2 19:32 /etc/alternatives/Java.1.gz -> /usr/lib/jvm/Java-9-openjdk-AMD64/man/man1/Java.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javac -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javac*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javac.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 45 Nov 2 19:35 /etc/alternatives/javadoc -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javadoc*
lrwxrwxrwx 1 root root 55 Nov 2 19:35 /etc/alternatives/javadoc.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javah -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javah*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javah.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javap -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javap*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javap.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javap.1.gz
Tous ces éléments pointent vers le répertoire 8
et non pas 1.8
, ce qui pose des problèmes lors de l'exécution de programmes. Ma question est la suivante: comment cette catastrophe s'est-elle produite et quel est le meilleur moyen de résoudre ce problème? Je voudrais supprimer tout le reste et avoir OpenJDK 8 comme JDK par défaut.
Le problème dans mon cas, c’est que j’avais installé inconsciemment openjdk sans tête également et que j’avais donc fini avec deux installations. J'ai finalement retiré tous les jdks de mon système et installé JDK 9 (ce qui n'est pas une installation sans problème, pourrais-je ajouter!) Et maintenant tout semble trié!
Choisissez la version Java:
Sudo update-alternatives --config Java
Exemple de sortie:
There are 2 choices for the alternative Java (providing usr/bin/Java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 auto mode
1 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 manual mode
* 2 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Vous pouvez également voir les alternatives pour Java
, javac
en utilisant l'option --list
:
Sudo update-alternatives --list Java
Sudo update-alternatives --list javac