web-dev-qa-db-fra.com

Java 8 vs Java 1.8 installation (nom du répertoire)

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:

  1. /usr/lib/jvm/Java-8-openjdk-AMD64
  2. /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.

7
dotslash

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é!

0
dotslash

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
2
Benny