Après la mise à niveau vers Java8, javac affiche toujours la version 1.7.

J’ai des problèmes pour mettre à niveau JDK 1.7 -> 1.8 sous OSX. La mise à niveau est terminée, mais javac renvoie toujours la version 1.7.

J’ai téléchargé JDK 8_u5 à partir de la page d’accueil d’Oracle et lance le programme d’installation.

J’ai également pris les mesures suivantes après l’installation:

> export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (Executed in my .bashrc file) > echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home > javac -version javac 1.7.0_21 > $JAVA_HOME/bin/javac -version javac 1.7.0_21 > $JAVA_HOME/bin/java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) 

J’ai examiné et supprimé Java 1.7 (et toutes les autres versions du JDK), puis réexécutez le programme d’installation:

 > ls /Library/Java/JavaVirtualMachines jdk1.8.0_05.jdk 

Toujours pas d’utilisation, javac signale la version 1.7.0_21

 > which javac /usr/bin/javac > ls -ltra /usr/bin/javac [snipped] /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac 

Dans ce chemin, Current est un lien symbolique vers A Le contenu des A/Commands est une série de fichiers (et non de liens symboliques).

 > cd A/Commands > ./javac -version javac 1.7.0_21 > ./java -version java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) 

modifier

En complément du message original, j’ai fait quelques recherches avec jenv , comme suggéré dans cette réponse .

 > jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home > jenv global oracle64-1.8.0.05 > jenv version oracle64-1.8.0.05 (set by /Users/martypitt/.jenv/version) > jenv info java Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/java > jenv info javac Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/javac > javac -version javac 1.7.0_21 

Cela jette une dispersion dans mes pensées, pensant qu’il s’agissait d’un javac aléatoire dissimulé sur mon chemin, qui était en quelque sorte en train d’être invoqué.

Pour être sûr, j’ai complètement bousculé mon Java et j’ai encore essayé:

 > cd /Library/Java/JavaVirtualMachines > ls jdk1.7.0_55.jdk jdk1.8.0_05.jdk > sudo rm -rf * > ls <> > java -version java version "1.6.0_65" > javac -version javac 1.6.0_65 > which javac /usr/bin/javac 

J’ai ensuite re-téléchargé une nouvelle copie du programme d’installation et l’ai exécuté.

 > java -version java version "1.8.0_05" > javac -version javac 1.7.0_21 

Mettre à jour

J’ai essayé de supprimer tous les JDK, XCode et tous les outils de développement, puis de les réinstaller. Même résultat.

Cependant, je suis toujours désemparé – où vais-je maintenant? Comment faire pour que javac 1.8 soit installé?

Si /usr/libexec/java_home -v 1.8.0_05 --exec javac -version retourne la version correcte, /usr/libexec/java_home -v 1.8.0_05 --exec javac -version votre problème est le suivant:

 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 

Avec un utilisateur privilégié, exécutez:

 cd /System/Library/Frameworks/JavaVM.framework/Versions/ rm CurrentJDK ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/ CurrentJDK 

Solution trouvée dans le blog Mankeh


Cochez également cette réponse sur Super User pour avoir basculé de manière dynamic entre les versions de JDK.


Mise à jour: Je suppose que j’ai trouvé le coupable!

Essaye ça:

 rm -rf ~/Library/Java/Extensions sudo rm -rf /Library/Java/Extensions 

Solution trouvée dans: Java 1.7 sur OSX 10.9.2 sous 1.5?

Pour les utilisateurs Windows:

Il est possible que vous deviez changer votre variable PATH. Essayez de définir votre “% JAVA_HOME% / bin” en tant que première entrée du chemin PATH.

Alors maintenant, ça ressemble à ça:

  PATH C:\Program Files\anyprogram;C:\Program Files\...;%JAVA_HOME%\bin 

Et vous le changez comme ça:

  PATH %JAVA_HOME%\bin;C:\Program Files\anyprogram;C:\Program Files\... 

Raison: tout autre programme lance d’abord une autre version Java.

C’est (probablement) un bogue dans le processus d’installation de jre8 .

J’obtiens exactement le même comportement lorsque je navigue dans mon dossier jre8 , qui est celui que Windows (dans mon cas) affiche par défaut:

  • version java: 1.8.0, environnement d’exécution 1.8.0-b132, hotspot JVM 64 bits 25.0-b70
  • version javac: 1.7.0_25

Lors de la navigation dans le répertoire jdk8 , les informations suivantes sont affichées :

  • version java: 1.8.0, environnement d’exécution 1.8.0-b132, hotspot JVM 64 bits 25.0-b70
  • version javac: 1.8.0

Je viens juste de remarquer que jre n’expédie jamais un javac , c’est donc un problème dans les parameters de référence du système d’exploitation, alors je suppose.

Pour résoudre ce problème, vous devez corriger manuellement la référence javac dans votre système d’exploitation.

Peut-être pouvez-vous supprimer le fichier .jar standard qui se trouve dans votre chemin de classe. Lorsque je supprime le fichier jar dans /Library/Java/Extensions , le problème sera résolu. Plus d’infos: Erreur de compilation Java: Mac

En ajoutant juste ma propre expérience ici, j’ai installé jdk-8u131-macosx-x64 chez Oracle. Tout a fonctionné parfaitement. Aucune variable d’environnement JAVA_HOME n’était présente ou nécessaire.

 mehboob$ javac -version javac 1.8.0_131 mehboob$ java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 

Le / System / Library a montré ceci:

 mehboob$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/ total 64 lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.4 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.4.2 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.5 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.5.0 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.6 -> CurrentJDK lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.6.0 -> CurrentJDK drwxr-xr-x 8 root wheel 272 Sep 9 2014 A lrwxr-xr-x 1 root wheel 1 Oct 17 2013 Current -> A lrwxr-xr-x 1 root wheel 59 Oct 17 2013 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 

Alors que / Library / Java avait ceci:

 mehboob$ ls -l /Library/Java/ total 8 drwxrwxr-x 2 root admin 68 Oct 17 2013 Extensions lrwxr-xr-x 1 root wheel 48 Oct 17 2013 Home -> /System/Library/Frameworks/JavaVM.framework/Home drwxr-xr-x 3 root wheel 102 Jun 9 11:43 JavaVirtualMachines 

Il n’y avait rien dans les extensions, alors que JavaVirtualMachines ne possédait que le dossier jdk1.8.0_131.jdk.

Cela montre qu’une installation par défaut de JDK fonctionne correctement sans configuration supplémentaire requirejse.

Tout d’abord, vous devez télécharger puis installer jdk8 ( http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ).

Deuxièmement, effectuez les vérifications suivantes: votre système utilise-t-il déjà java 8 sans lien pour shell? Essayez ceci dans votre terminal (oui, les apostrophes sont importantes):

 $ '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java' -version 

s’il indique “version Java” 1.8.0_131 “”, vous pourrez passer à l’étape suivante.

ma capture d’écran

Troisièmement, éditez le bash_profile:

 $ vi ~/.bash_profile 

et tapez ceci:

 JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib export JAVA_HOME export CLASSPATH 

sauvez-le et quittez, puis

 source ~/.bash_profile 

Après les étapes ci-dessus, et vérifiez la version Java

 $ java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)