(Je ne savais pas si cela devait continuer avec SU ... la migration est certainement une option, mais plus de programmeurs lisent les questions ici, alors voici).
J'utilise Mac OS X 10.8.4 et le JDK 1.6.0_51 d'Apple est installé ainsi que le JDK 1.7.0_25 d'Oracle. J'ai récemment installé le JDK d'aperçu 1.8 d'Oracle pour certains logiciels en pré-version qui en ont besoin. Maintenant, quand je lance / usr / libexec / java_home, j'obtiens ceci:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Génial.
Cependant, en cours d'exécution:
$ java -version
Retour:
java version "1.8.0-ea"
Cela signifie que la version par défaut de Java est actuellement la version pré-version, qui casse certains packages "normaux" (dans mon cas, VisualVM).
Je ne peux pas définir JAVA_HOME
car le lancement d'applications ignore les variables d'environnement, même lors du lancement à partir de la ligne de commande (par exemple $ open /Applications/VisualVM.app
).
Alors, y a-t-il un fichier que je peux modifier dans lequel je peux définir mes préférences de commande JVM globalement ?
(Veuillez ne pas me dire de lancer le panneau de préférences Java car cela ne fonctionne tout simplement pas: il ne contient rien d'utile et ne répertorie qu'une des 4 JVM que j'ai installées.)
Mise à jour :
Les JVM Oracle vivent dans /Library/Java/JavaVirtualMachines
. Renommer le répertoire JDK 1.8 en jdk1.8.0.jvm.xyz
ne change rien: le java_home
trouve toujours au bon endroit, et l'exécution de / usr / bin / java exécute toujours la JVM 1.8. Ce n'est pas un problème avec les liens de synchronisation, etc.
Réponses à des questions similaires
Bien que cette réponse offre ce qui équivaut à un hack qui supprimera les versions de Java de la capture par java_home, elle ne répond toujours pas à cette question de savoir comment java_home choisit sa valeur par défaut et si les utilisateurs peuvent ou non le définir de manière non destructive .
/usr/bin/java
pointe vers /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. Le Versions
répertoire ne contient pas de lien symbolique vers le JDK 1.8.0. Au lieu de cela, il contient un répertoire appelé utilement A
qui Current
pointe vers. A
n'est pas un "JAVA_HOME. Il a un sous-répertoire appelé Commands
qui a une java
commande, mais c'est un binaire universel opaque qui fait qui-sait-quoi. Je soupçonne qu'il utilise java_home
, etc. pour décider quelle JVM utiliser.
/usr/bin/java
est juste un lien symbolique