web-dev-qa-db-fra.com

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

Je rencontre des problèmes de mise à niveau de JDK 1.7 -> 1.8 sous OSX. La mise à niveau est terminée, mais javac renvoie toujours 1.7 comme version.

J'ai téléchargé JDK 8_u5 à partir de la page d'accueil d'Oracle et exécuté 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 parcouru et supprimé Java 1.7 (et toutes les autres versions JDK), puis réexécuté le programme d'installation:

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

Toujours pas utile, javac rapporte 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 de A/Commands sont une série de fichiers (pas des 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

Suite à la publication d'origine, j'ai fait quelques recherches avec jenv , comme suggéré sur 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 des dispersions sur mes pensées que c'était un javac aléatoire tapi sur mon chemin, qui était en quelque sorte invoqué.

Pour être sûr, j'ai complètement détruit mon Java, et j'ai réessayé:

> cd /Library/Java/JavaVirtualMachines
> ls 
jdk1.7.0_55.jdk 
jdk1.8.0_05.jdk
> Sudo rm -rf *  
> ls
<<empty>>
> 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é un 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

Mise à jour

J'ai essayé de supprimer tous les JDK, XCode et tous les outils de développement, et de les réinstaller à nouveau. Mêmes résultats.

Cependant, je suis toujours perdu - où dois-je aller d'ici? Comment installer javac 1.8?

37
Marty Pitt

Si /usr/libexec/Java_home -v 1.8.0_05 --exec javac -version retourne la version correcte, alors votre problème est avec:

/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 Mankeh Blog


Vérifiez également cette réponse sur Super User pour changer dynamiquement les versions 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 fonctionnant en 1.5?

39
Anthony Accioly

Pour les utilisateurs de Windows:

Il est possible que vous deviez changer votre variable PATH. Essayez de définir votre "% Java_HOME%/bin" comme entrée first dans le PATH.

Alors maintenant, cela ressemble à ceci:

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

Et vous le changez comme ceci:

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

Raison: Tout autre programme lance une autre Java version en premier.

10
KayG

Il s'agit (très probablement) d'un bogue dans le processus d'installation de jre8.

J'obtiens exactement le même comportement lorsque je navigue vers 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 64-bit JVM 25.0-b70
  • version javac: 1.7.0_25

Lorsque vous accédez au répertoire jdk8, il affiche les éléments suivants:

  • Version Java: 1.8.0, environnement d'exécution 1.8.0-b132, hotspot 64-bit JVM 25.0-b70
  • version javac: 1.8.0

Je viens de remarquer cependant que le jre ne livre jamais un javac , c'est donc un problème dans les paramètres de référence du système d'exploitation, alors je suppose.

Pour le corriger, vous devez corriger manuellement la référence javac dans votre système d'exploitation.

0
skiwi

Ajoutant juste ma propre expérience ici, j'ai installé jdk-8u131-macosx-x64 d'Oracle. Tout fonctionnait 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)

La/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 n'avait que le dossier jdk1.8.0_131.jdk.

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

0
machinat

Tout d'abord, vous devez télécharger puis installer le jdk8 ( http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html )

Deuxièmement, faites quelques vérifications comme suit: Votre système a-t-il une utilisation non liée pour Shell Java 8 déjà? Essayez ceci dans votre terminal (oui, les apostrophes sont importantes):

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

s'il affiche "Java version" 1.8.0_131 "", vous pouvez passer à l'étape suivante.

ma capture d'écran

Troisièmement, modifiez 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 

enregistrez-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)
0
Huang

Vous pouvez peut-être supprimer le fichier .jar standard qui se trouve dans votre chemin de classe. Lorsque je supprime le pot dans /Library/Java/Extensions, le problème sera résolu. Plus d'informations: erreur de compilation Java: Mac

0
HadYang