6 votes

Pourquoi /usr/libexec/java_home ne reconnaît-il pas le JDK 1.8 ?

J'essaie d'installer un JDK 8 sur OS X Mountain Lion (pour expérimenter les nouvelles fonctionnalités lambda).

Point de départ

Une machine récemment mise à jour de OS X 10.6 à 10.8, avec

$ sw_vers
  ProductName:    Mac OS X
  ProductVersion: 10.8.2
  BuildVersion:   12C60

$ ls -l /Library/Java/JavaVirtualMachines/
  Home@ -> jdk1.7.0_09.jdk/Contents/Home/
  jdk1.7.0_09.jdk/

$ ls -l /System/Library/Java/JavaVirtualMachines/
  1.6.0.jdk/

et ce dossier de l'ère OS X 10.6 :

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

Dans ~/.bashrc, j'ai mis

export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home

J'ai donc

$ java -version
  java version "1.7.0_09"
  Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
  Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

$ /usr/libexec/java_home
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home

Comment j'ai installé le JDK 8

  1. Le fichier .tar.gz a été téléchargé à partir de http://jdk8.java.net/lambda/ et l'a déballé dans

    • /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

    (J'ai créé les dossiers jdk1.8.0.jdk/Contents/Home manuellement)

  2. Modification du lien symbolique /Library/Java/JavaVirtualMachines/Home pour pointer vers jdk1.8

Maintenant, j'ai

$ java -version
  openjdk version "1.8.0-ea"
  OpenJDK Runtime Environment (build 1.8.0-ea-lambda-nightly-h2135-20121203-b67-b00)
  OpenJDK 64-Bit Server VM (build 25.0-b05, mixed mode)

$ echo $JAVA_HOME
  /Library/Java/JavaVirtualMachines/Home

$ ls /Library/Java/JavaVirtualMachines
  Home@ -> jdk1.8.0.jdk/Contents/Home/
  ...

Mais le java_home Le service public ne semble pas s'en préoccuper :

$ /usr/libexec/java_home 
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home

Il ne sait même pas qu'il existe un JDK 8 :

$ /usr/libexec/java_home -v 1.8*
  Unable to find any JVMs matching version "1.8*".

Pregunta

J'aimerais que le /usr/libexec/java_home pour trouver les JDK installés, ce qui me permet d'utiliser quelque chose comme ceci :

alias setjdk17='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7*)'
alias setjdk18='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8*)'

et se débarrasser de la Home lien symbolique. Quelqu'un sait-il

  • comment installer correctement le JDK 8 ?
  • comment je peux faire /usr/libexec/java_home le reconnaître ?

2voto

Steve Points 103

Vous devez également copier le répertoire Contents/MacOS et Info.plist du SDK 1.7 et les adapter (en changeant les chaînes de version).

Alors vous pouvez :

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
$ java -version
openjdk version "1.8.0-ea"
$ /usr/libexec/java_home -v 1.8*
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

Notez qu'il s'agit d'un hack et que je n'ai rien essayé d'autre que de lancer java... Je me suis simplement appuyé sur votre conseil de créer le paquetage.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X